From 722f0a5179b71d3bf2abba3df9ac06318ea1b2d8 Mon Sep 17 00:00:00 2001 From: Mantas Vidutis Date: Mon, 18 Oct 2021 11:53:32 -0700 Subject: [PATCH] Merge PR #56: Sommelier end-to-end rebalance test WIP * modifying oracle * removing oracle specific types * serializing tick weights * mostly removed oracle * validation of commits * weighted tick map * makefile updates * multiple * oracle feeder doesnt live here * consistent naming * no more oracle * add proto defs * cleanup * clean up params * WIP outgoing_tx types * remove miss counter * new key style * undelete * rename to gravity * initial integration test setup * codec files unneeded * codec data types not needed * no miss counters or data types * cleanup * gofmt * linting * go fmt * goimports * go mod tidy * remove empty comments * disable critic and interfacer * disable whiny linters * no args * prealloc * call notes * custom governance * keeper updates * split proposals * sdk updates * more sdk changes * go mod * cellar updates * commit cellar * Comment out allocation module from app.go to prepare for merge * governance implementation * fmt * go imports * no implicit mem addr * integration tests * linting * abi updates * WIP rebalance call * test fix * Merge PR #60: Rebalance Call test * Passing pack teset * Add comments * Fix string -> bytes * Check error * initial keeper tests * eth key from mnemonic * file rename * mnemonics everywhere * fmt * imports * Integration test hardhat (#64) * setup hardhat folder * setup node test * clean up task cruft * pin block numer * formatted * dockerfile for hardhat * makefile * cleanup * initial genesis * genesis file * nodes talking, can't be reached by rpc * validators operating * fix docker setup for hardhat (#68) * fix docker setup for hardhat * check in artifacts * cleanup * bump orc version to gorc image * gorc running * ethereum startup check * make command to run test * ci integration tests * split out version * incorrect depgs * formatting * no version * build context * wrong dir * rename to proper name * proper path * refactor common code * path instead of passphrase * typo * key paths * fund accounts with eth * wait for balance * running chain * cellars in genesis state * signing and sending msgs * failing on from retrieval * sending error * registered auth codec * longer test timeout * proper format * update eth version * unknown error * check ticks after rebalance * more logs in startup of validators * somm not val * quick exit on exit * fail faster * get status * use gravity delegations instead of custom * different signer * back to the validator * use creator * use working dir in CI * getting past precommits * cellars not saving * precommits successful * wait for new vote period * hash mismatch * hash logging * consolidate caladdr logic * new datahash * waiting for end * calling contract * signer set not updating * more logging * logging args * point at pr orchestrator * more logs * update for more logs * shed somm user * empty line * Fix genesis tests. Show hashes in hex form * linting * linting pass * match the gravity_id in genesis with hardhard id * trying to inject contract source * update oz folder structure, sol compiler vers * contracts * update block #, gasPrice * lock contracts to previous version * runs * checkin artifacts * verification * verify is no help * cleanup * redelegate * wrong denom Co-authored-by: Jack Zampolin Co-authored-by: Kevin Kennis Co-authored-by: Zaki Manian Co-authored-by: Lucky Odisetti --- .dockerignore | 7 + .github/workflows/integration-tests.yml | 163 + .gitignore | 1 + .golangci.yml | 6 +- Dockerfile | 34 +- Makefile | 52 + app/app.go | 36 +- docs/core/proto-docs.md | 160 +- go.mod | 32 +- go.sum | 286 +- integration_tests/chain.go | 302 + integration_tests/ethereum.go | 25 + integration_tests/ethereum/Dockerfile | 16 + .../GSN/Context.sol/Context.dbg.json | 4 + .../contracts/GSN/Context.sol/Context.json | 10 + .../math/SafeMath.sol/SafeMath.dbg.json | 4 + .../contracts/math/SafeMath.sol/SafeMath.json | 10 + .../token/ERC20/ERC20.sol/ERC20.dbg.json | 4 + .../token/ERC20/ERC20.sol/ERC20.json | 297 + .../token/ERC20/IERC20.sol/IERC20.dbg.json | 4 + .../token/ERC20/IERC20.sol/IERC20.json | 194 + .../ERC20/SafeERC20.sol/SafeERC20.dbg.json | 4 + .../token/ERC20/SafeERC20.sol/SafeERC20.json | 10 + .../utils/Address.sol/Address.dbg.json | 4 + .../contracts/utils/Address.sol/Address.json | 10 + .../ReentrancyGuard.dbg.json | 4 + .../ReentrancyGuard.sol/ReentrancyGuard.json | 16 + .../5e75fa0d261632fee0553f969fc894bc.json | 91599 ++++++++++++++++ .../CellarPoolShare.sol/Address.dbg.json | 4 + .../CellarPoolShare.sol/Address.json | 10 + .../CellarPoolShare.sol/BlockLock.dbg.json | 4 + .../CellarPoolShare.sol/BlockLock.json | 30 + .../CellarPoolShare.dbg.json | 4 + .../CellarPoolShare.sol/CellarPoolShare.json | 762 + .../CellarPoolShare.sol/FixedPoint96.dbg.json | 4 + .../CellarPoolShare.sol/FixedPoint96.json | 10 + .../CellarPoolShare.sol/FullMath.dbg.json | 4 + .../CellarPoolShare.sol/FullMath.json | 10 + .../ICellarPoolShare.dbg.json | 4 + .../CellarPoolShare.sol/ICellarPoolShare.json | 541 + .../CellarPoolShare.sol/IERC20.dbg.json | 4 + .../contracts/CellarPoolShare.sol/IERC20.json | 194 + .../INonfungiblePositionManager.dbg.json | 4 + .../INonfungiblePositionManager.json | 347 + .../CellarPoolShare.sol/ISwapRouter.dbg.json | 4 + .../CellarPoolShare.sol/ISwapRouter.json | 72 + .../IUniswapV3Factory.dbg.json | 4 + .../IUniswapV3Factory.json | 40 + .../IUniswapV3Pool.dbg.json | 4 + .../CellarPoolShare.sol/IUniswapV3Pool.json | 54 + .../CellarPoolShare.sol/IWETH.dbg.json | 4 + .../contracts/CellarPoolShare.sol/IWETH.json | 31 + .../LiquidityAmounts.dbg.json | 4 + .../CellarPoolShare.sol/LiquidityAmounts.json | 10 + .../CellarPoolShare.sol/SafeERC20.dbg.json | 4 + .../CellarPoolShare.sol/SafeERC20.json | 10 + .../CellarPoolShare.sol/TickMath.dbg.json | 4 + .../CellarPoolShare.sol/TickMath.json | 10 + .../CosmosToken.sol/CosmosERC20.dbg.json | 4 + .../CosmosToken.sol/CosmosERC20.json | 307 + .../contracts/Gravity.sol/Gravity.dbg.json | 4 + .../contracts/Gravity.sol/Gravity.json | 678 + .../ethereum/contracts/CellarPoolShare.sol | 1659 + .../ethereum/contracts/CosmosToken.sol | 16 + .../ethereum/contracts/Gravity.sol | 604 + integration_tests/ethereum/hardhat.config.ts | 140 + integration_tests/ethereum/package.json | 30 + integration_tests/ethereum/tasks.ts | 13 + integration_tests/ethereum/tsconfig.json | 31 + integration_tests/ethereum/yarn.lock | 7822 ++ integration_tests/genesis.go | 110 + integration_tests/gorc_bootstrap.sh | 10 + integration_tests/io.go | 43 + integration_tests/keys.go | 83 + integration_tests/keys_test.go | 17 + integration_tests/orchestrator.go | 18 + integration_tests/rebalance_test.go | 326 + integration_tests/setup_test.go | 726 + integration_tests/util.go | 47 + integration_tests/validator.go | 355 + proto/allocation/v1/allocation.proto | 9 +- proto/allocation/v1/genesis.proto | 4 +- proto/allocation/v1/query.proto | 81 +- proto/allocation/v1/tx.proto | 18 +- x/allocation/client/cli/query.go | 52 - x/allocation/client/cli/tx.go | 46 +- x/allocation/genesis.go | 33 - x/allocation/handler.go | 3 - x/allocation/keeper/abci.go | 97 +- x/allocation/keeper/genesis.go | 34 + x/allocation/keeper/keeper.go | 132 +- x/allocation/keeper/keeper_test.go | 117 + x/allocation/keeper/msg_server.go | 120 +- x/allocation/keeper/query_server.go | 92 +- x/allocation/keeper/test_common.go | 621 + x/allocation/module.go | 4 +- x/allocation/types/abi.go | 14 + x/allocation/types/allocation.pb.go | 86 +- x/allocation/types/cellar.go | 50 +- x/allocation/types/codec.go | 1 - x/allocation/types/expected_keepers.go | 13 + x/allocation/types/genesis.go | 32 +- x/allocation/types/genesis.pb.go | 71 +- x/allocation/types/genesis_test.go | 50 +- x/allocation/types/keys.go | 11 - x/allocation/types/msgs.go | 89 +- x/allocation/types/outgoing_tx.go | 83 +- x/allocation/types/outgoing_tx_test.go | 47 + x/allocation/types/params.go | 4 +- x/allocation/types/query.pb.go | 1332 +- x/allocation/types/query.pb.gw.go | 302 +- x/allocation/types/tick_range.go | 7 + x/allocation/types/tx.pb.go | 446 +- 113 files changed, 110666 insertions(+), 1963 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/integration-tests.yml create mode 100644 integration_tests/chain.go create mode 100644 integration_tests/ethereum.go create mode 100644 integration_tests/ethereum/Dockerfile create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.dbg.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.dbg.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json create mode 100644 integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.json create mode 100644 integration_tests/ethereum/artifacts/build-info/5e75fa0d261632fee0553f969fc894bc.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.json create mode 100644 integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.dbg.json create mode 100644 integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.json create mode 100644 integration_tests/ethereum/contracts/CellarPoolShare.sol create mode 100644 integration_tests/ethereum/contracts/CosmosToken.sol create mode 100644 integration_tests/ethereum/contracts/Gravity.sol create mode 100644 integration_tests/ethereum/hardhat.config.ts create mode 100644 integration_tests/ethereum/package.json create mode 100644 integration_tests/ethereum/tasks.ts create mode 100644 integration_tests/ethereum/tsconfig.json create mode 100644 integration_tests/ethereum/yarn.lock create mode 100644 integration_tests/genesis.go create mode 100755 integration_tests/gorc_bootstrap.sh create mode 100644 integration_tests/io.go create mode 100644 integration_tests/keys.go create mode 100644 integration_tests/keys_test.go create mode 100644 integration_tests/orchestrator.go create mode 100644 integration_tests/rebalance_test.go create mode 100644 integration_tests/setup_test.go create mode 100644 integration_tests/util.go create mode 100644 integration_tests/validator.go delete mode 100644 x/allocation/genesis.go create mode 100644 x/allocation/keeper/genesis.go create mode 100644 x/allocation/keeper/keeper_test.go create mode 100644 x/allocation/keeper/test_common.go create mode 100644 x/allocation/types/abi.go create mode 100644 x/allocation/types/outgoing_tx_test.go create mode 100644 x/allocation/types/tick_range.go diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..cf33b39f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +integration_tests/ +!integration_tests/gorc_bootstrap.sh +docs/ +Dockerfile + +.idea/ +.github/ \ No newline at end of file diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml new file mode 100644 index 00000000..edeb263d --- /dev/null +++ b/.github/workflows/integration-tests.yml @@ -0,0 +1,163 @@ +name: Integration tests + +on: + push: + branches: + - main + tags: + - 'v*.*.*' + pull_request: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + ORCHESTRATOR_IMAGE_NAME: ghcr.io/peggyjv/gravity-bridge-orchestrator:v0.2.1 + +jobs: + sommelier-build: + permissions: + contents: read + packages: write + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Cache Docker layers + uses: actions/cache@v2 + id: docker-cache + with: + path: /tmp/.buildx-cache + # Key is named differently to avoid collision + key: ${{ runner.os }}-multi-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-multi-buildx + - name: container-login + uses: docker/login-action@v1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: labels + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-sommelier + - name: build-and-push + uses: docker/build-push-action@v2 + with: + context: . + file: Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + builder: ${{ steps.buildx.outputs.name }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new + - name: Move Docker cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + hardhat-build: + permissions: + contents: read + packages: write + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Cache Docker layers + uses: actions/cache@v2 + id: docker-cache + with: + path: /tmp/.buildx-cache + # Key is named differently to avoid collision + key: ${{ runner.os }}-multi-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-multi-buildx + - name: container-login + uses: docker/login-action@v1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: labels + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-hardhat + - name: build-and-push + uses: docker/build-push-action@v2 + with: + context: integration_tests/ethereum + file: integration_tests/ethereum/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + builder: ${{ steps.buildx.outputs.name }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new + - name: Move Docker cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + integration-tests: + runs-on: ubuntu-latest + needs: [ sommelier-build, hardhat-build ] + strategy: + fail-fast: false + matrix: + test_type: [ "Rebalance" ] + steps: + - name: Set up Go 1.16 + uses: actions/setup-go@v2 + with: + go-version: ^1.16 + - name: checkout + uses: actions/checkout@v2 + - name: go-cache + uses: actions/cache@v2 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - name: container-login + uses: docker/login-action@v1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: docker sommelier metadata + id: meta-sommelier + uses: docker/metadata-action@v3 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-sommelier + - name: docker hardhat metadata + id: meta-hardhat + uses: docker/metadata-action@v3 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-hardhat + - name: pull sommelier image + run: docker pull ${{ steps.meta-sommelier.outputs.tags }} + - name: rename sommelier image + run: docker tag ${{ steps.meta-sommelier.outputs.tags }} sommelier:prebuilt + - name: pull hardhat image + run: docker pull ${{ steps.meta-hardhat.outputs.tags }} + - name: rename hardhat image + run: docker tag ${{ steps.meta-hardhat.outputs.tags }} ethereum:prebuilt + - name: pull orchestrator image + run: docker pull ${{ env.ORCHESTRATOR_IMAGE_NAME }} + - name: rename orchestrator image + run: docker tag ${{ env.ORCHESTRATOR_IMAGE_NAME }} orchestrator:prebuilt + - name: build go test binary + run: cd integration_tests && go test -c + - name: Run end to end test + run: ./integration_tests/integration_tests.test -test.failfast -test.v -test.run IntegrationTestSuite -testify.m Test${{ matrix.test_type }} diff --git a/.gitignore b/.gitignore index de264458..a96e9353 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,5 @@ node_modules solidity/dist cache artifacts +!integration_tests/ethereum/artifacts *.test diff --git a/.golangci.yml b/.golangci.yml index 7939a93b..c2f91725 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,5 +1,5 @@ -run: - tests: false +#run: +# tests: false # # timeout for analysis, e.g. 30s, 5m, default is 1m # timeout: 5m @@ -59,6 +59,8 @@ issues: max-issues-per-linter: 10000 max-same-issues: 10000 + fix: true + linters-settings: dogsled: max-blank-identifiers: 3 diff --git a/Dockerfile b/Dockerfile index 91954c6d..fae70a9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,34 +1,44 @@ FROM golang:alpine AS build-env -# Set up dependencies -ENV PACKAGES curl make git libc-dev bash gcc linux-headers eudev-dev python3 +RUN apk add --no-cache curl make git libc-dev bash gcc linux-headers eudev-dev python3 # Set working directory for the build WORKDIR /go/src/github.com/peggyjv/sommelier +# Get dependancies - will also be cached if we won't change mod/sum +COPY go.mod . +COPY go.sum . +RUN go mod download + # Add source files COPY . . -# Install minimum necessary dependencies, build Cosmos SDK, remove packages -RUN apk add --no-cache $PACKAGES && \ - make install +# build Sommelier +RUN make install # Final image FROM alpine:edge -ENV SOMM /somm +#ENV SOMM /somm # Install ca-certificates -RUN apk add --update ca-certificates +RUN apk add --update ca-certificates bash + +# create and expose config dir +#RUN mkdir -p /somm/.sommelier/config +#RUN chmod -R 777 /somm/.sommelier/config +#RUN mkdir /somm/.sommelier/data +#RUN chmod 777 /somm/.sommelier/data -RUN addgroup sommuser && \ - adduser -S -G sommuser sommuser -h "$SOMM" +# RUN addgroup sommuser && \ +# adduser -S -G sommuser sommuser -h "$SOMM" -USER sommuser +#USER sommuser +#EXPOSE 1317 6060 6061 6062 6063 6064 6065 9090 26656 26657 -WORKDIR $SOMM +#WORKDIR $SOMM # Copy over binaries from the build-env COPY --from=build-env /go/bin/sommelier /usr/bin/sommelier -CMD ["sommelier"] +CMD ["sommelier", "start"] diff --git a/Makefile b/Makefile index 5bcc194b..146a68d5 100644 --- a/Makefile +++ b/Makefile @@ -346,3 +346,55 @@ tools-clean: rm -f proto-tools-stamp buf-stampmodule .PHONY: proto-all proto-gen proto-swagger-gen proto-format proto-lint proto-check-breaking proto-update-deps + +##################### +# Integration tests # +##################### + +#ORCHESTRATOR_IMAGE := "ghcr.io/peggyjv/gravity-bridge-orchestrator:v0.2.13" +# pointing at a specific PR currently, for testing +ORCHESTRATOR_IMAGE := "ghcr.io/peggyjv/gravity-bridge-orchestrator:pr-203" + +e2e_build_images: + @docker pull $(ORCHESTRATOR_IMAGE) + @docker tag $(ORCHESTRATOR_IMAGE) orchestrator:prebuilt + @docker build -t sommelier:prebuilt -f Dockerfile . + @docker build -t ethereum:prebuilt -f integration_tests/ethereum/Dockerfile integration_tests/ethereum/ + +e2e_clean_slate: + @docker rm --force \ + $(shell docker ps -qa --filter="name=ethereum") \ + $(shell docker ps -qa --filter="name=sommelier") \ + $(shell docker ps -qa --filter="name=orchestrator") \ + 1>/dev/null \ + 2>/dev/null \ + || true + @docker wait \ + $(shell docker ps -qa --filter="name=ethereum") \ + $(shell docker ps -qa --filter="name=sommelier") \ + $(shell docker ps -qa --filter="name=orchestrator") \ + 1>/dev/null \ + 2>/dev/null \ + || true + @docker network prune --force 1>/dev/null 2>/dev/null || true + @cd integration_tests && go test -c + +e2e_basic: e2e_clean_slate + @E2E_SKIP_CLEANUP=true + @integration_tests/integration_tests.test -test.run TestBasicChain -test.failfast -test.v || make -s fail + +e2e_rebalance: e2e_clean_slate + @E2E_SKIP_CLEANUP=true integration_tests/integration_tests.test -test.failfast -test.v -test.run IntegrationTestSuite -testify.m TestRebalance || make -s fail + +fail: + @echo 'test failed; dumping container logs into ./testlogs for review' + @docker logs ethereum > testlogs/ethereum.log>&1 || true + @docker logs sommelier0 > testlogs/sommelier0.log 2>&1 || true + @docker logs sommelier1 > testlogs/sommelier1.log 2>&1 || true + @docker logs sommelier2 > testlogs/sommelier2.log 2>&1 || true + @docker logs sommelier3 > testlogs/sommelier3.log 2>&1 || true + @docker logs orchestrator0 > testlogs/orchestrator0.log 2>&1 || true + @docker logs orchestrator1 > testlogs/orchestrator1.log 2>&1 || true + @docker logs orchestrator2 > testlogs/orchestrator2.log 2>&1 || true + @docker logs orchestrator3 > testlogs/orchestrator3.log 2>&1 || true + @false diff --git a/app/app.go b/app/app.go index 99fe7e22..fb55345f 100644 --- a/app/app.go +++ b/app/app.go @@ -87,6 +87,9 @@ import ( gravitykeeper "github.com/peggyjv/gravity-bridge/module/x/gravity/keeper" gravitytypes "github.com/peggyjv/gravity-bridge/module/x/gravity/types" appParams "github.com/peggyjv/sommelier/app/params" + "github.com/peggyjv/sommelier/x/allocation" + allocationkeeper "github.com/peggyjv/sommelier/x/allocation/keeper" + allocationtypes "github.com/peggyjv/sommelier/x/allocation/types" "github.com/rakyll/statik/fs" abci "github.com/tendermint/tendermint/abci/types" tmjson "github.com/tendermint/tendermint/libs/json" @@ -132,7 +135,7 @@ var ( vesting.AppModuleBasic{}, authzmodule.AppModuleBasic{}, gravity.AppModuleBasic{}, - // allocation.AppModuleBasic{}, + allocation.AppModuleBasic{}, ) // module account permissions @@ -192,7 +195,7 @@ type SommelierApp struct { FeeGrantKeeper feegrantkeeper.Keeper // Sommelier keepers - // AllocationKeeper allocationkeeper.Keeper + AllocationKeeper allocationkeeper.Keeper // make capability scoped keepers public for test purposes (IBC only) ScopedIBCKeeper capabilitykeeper.ScopedKeeper @@ -234,7 +237,7 @@ func NewSommelierApp( minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey, govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey, evidencetypes.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, - gravitytypes.ModuleName, feegrant.StoreKey, authzkeeper.StoreKey, + gravitytypes.ModuleName, feegrant.StoreKey, authzkeeper.StoreKey, allocationtypes.ModuleName, ) tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey) memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) @@ -314,8 +317,8 @@ func NewSommelierApp( AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(app.DistrKeeper)). AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). - AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)) //. - // AddRoute(allocationtypes.RouterKey, allocation.NewUpdateManagedCellarsProposalHandler(app.AllocationKeeper)) + AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)). + AddRoute(allocationtypes.RouterKey, allocation.NewUpdateManagedCellarsProposalHandler(app.AllocationKeeper)) app.GovKeeper = govkeeper.NewKeeper( appCodec, keys[govtypes.StoreKey], app.GetSubspace(govtypes.ModuleName), app.AccountKeeper, app.BankKeeper, &stakingKeeper, govRouter, @@ -337,13 +340,13 @@ func NewSommelierApp( app.GravityKeeper.SetHooks( gravitytypes.NewMultiGravityHooks( - // app.AllocationKeeper.Hooks(), + app.AllocationKeeper.Hooks(), )) - // app.AllocationKeeper = allocationkeeper.NewKeeper( - // appCodec, keys[allocationtypes.StoreKey], app.GetSubspace(allocationtypes.ModuleName), - // app.StakingKeeper, app.GravityKeeper, - // ) + app.AllocationKeeper = allocationkeeper.NewKeeper( + appCodec, keys[allocationtypes.StoreKey], app.GetSubspace(allocationtypes.ModuleName), + app.StakingKeeper, app.GravityKeeper, + ) // Create static IBC router, add transfer route, then set and seal it ibcRouter := ibcporttypes.NewRouter() @@ -394,8 +397,7 @@ func NewSommelierApp( transferModule, gravity.NewAppModule(app.GravityKeeper, app.BankKeeper), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - - // allocation.NewAppModule(app.AllocationKeeper, appCodec), + allocation.NewAppModule(app.AllocationKeeper, appCodec), ) // During begin block slashing happens after distr.BeginBlocker so that @@ -405,12 +407,15 @@ func NewSommelierApp( app.mm.SetOrderBeginBlockers( upgradetypes.ModuleName, minttypes.ModuleName, distrtypes.ModuleName, slashingtypes.ModuleName, evidencetypes.ModuleName, stakingtypes.ModuleName, ibchost.ModuleName, gravitytypes.ModuleName, + allocationtypes.ModuleName, ) // NOTE: Impermanent loss module must always go after the oracle module to have the // aggregated data available for stoploss execution. The bridge module doesn't require a // specific endblock order. - app.mm.SetOrderEndBlockers(crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, gravitytypes.ModuleName) + app.mm.SetOrderEndBlockers(crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, + gravitytypes.ModuleName, allocationtypes.ModuleName, + ) // NOTE: The genutils module must occur after staking so that pools are // properly initialized with tokens from genesis accounts. @@ -422,7 +427,7 @@ func NewSommelierApp( stakingtypes.ModuleName, slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName, ibchost.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, ibctransfertypes.ModuleName, gravitytypes.ModuleName, authz.ModuleName, - feegrant.ModuleName, + feegrant.ModuleName, allocationtypes.ModuleName, ) app.mm.RegisterInvariants(&app.CrisisKeeper) @@ -447,7 +452,7 @@ func NewSommelierApp( evidence.NewAppModule(app.EvidenceKeeper), ibc.NewAppModule(app.IBCKeeper), authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - // allocation.NewAppModule(app.AllocationKeeper, appCodec), + allocation.NewAppModule(app.AllocationKeeper, appCodec), ) app.sm.RegisterStoreDecoders() @@ -662,6 +667,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(ibctransfertypes.ModuleName) paramsKeeper.Subspace(ibchost.ModuleName) paramsKeeper.Subspace(gravitytypes.ModuleName) + paramsKeeper.Subspace(allocationtypes.ModuleName) return paramsKeeper } diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 487f05fd..75cc3971 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -18,8 +18,6 @@ - [MsgAllocationCommitResponse](#allocation.v1.MsgAllocationCommitResponse) - [MsgAllocationPrecommit](#allocation.v1.MsgAllocationPrecommit) - [MsgAllocationPrecommitResponse](#allocation.v1.MsgAllocationPrecommitResponse) - - [MsgDelegateAllocations](#allocation.v1.MsgDelegateAllocations) - - [MsgDelegateAllocationsResponse](#allocation.v1.MsgDelegateAllocationsResponse) - [Msg](#allocation.v1.Msg) @@ -30,16 +28,18 @@ - [allocation/v1/query.proto](#allocation/v1/query.proto) - [QueryAllocationCommitRequest](#allocation.v1.QueryAllocationCommitRequest) - [QueryAllocationCommitResponse](#allocation.v1.QueryAllocationCommitResponse) + - [QueryAllocationCommitsRequest](#allocation.v1.QueryAllocationCommitsRequest) + - [QueryAllocationCommitsResponse](#allocation.v1.QueryAllocationCommitsResponse) - [QueryAllocationPrecommitRequest](#allocation.v1.QueryAllocationPrecommitRequest) - [QueryAllocationPrecommitResponse](#allocation.v1.QueryAllocationPrecommitResponse) + - [QueryAllocationPrecommitsRequest](#allocation.v1.QueryAllocationPrecommitsRequest) + - [QueryAllocationPrecommitsResponse](#allocation.v1.QueryAllocationPrecommitsResponse) + - [QueryCellarsRequest](#allocation.v1.QueryCellarsRequest) + - [QueryCellarsResponse](#allocation.v1.QueryCellarsResponse) - [QueryCommitPeriodRequest](#allocation.v1.QueryCommitPeriodRequest) - [QueryCommitPeriodResponse](#allocation.v1.QueryCommitPeriodResponse) - - [QueryDelegateAddressRequest](#allocation.v1.QueryDelegateAddressRequest) - - [QueryDelegateAddressResponse](#allocation.v1.QueryDelegateAddressResponse) - [QueryParamsRequest](#allocation.v1.QueryParamsRequest) - [QueryParamsResponse](#allocation.v1.QueryParamsResponse) - - [QueryValidatorAddressRequest](#allocation.v1.QueryValidatorAddressRequest) - - [QueryValidatorAddressResponse](#allocation.v1.QueryValidatorAddressResponse) - [Query](#allocation.v1.Query) @@ -96,7 +96,7 @@ of allocation | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `hash` | [bytes](#bytes) | | | +| `hash` | [bytes](#bytes) | | bytes hash = 1 [(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes"]; | | `cellar_id` | [string](#string) | | | @@ -161,9 +161,9 @@ Cellar is a collection of pools for a token pair | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `upper` | [uint64](#uint64) | | | -| `lower` | [uint64](#uint64) | | | -| `weight` | [uint64](#uint64) | | | +| `upper` | [int32](#int32) | | | +| `lower` | [int32](#int32) | | | +| `weight` | [uint32](#uint32) | | | @@ -239,33 +239,6 @@ MsgAllocationPrecommitResponse is the response type for the Msg/AllocationPrecom - - - -### MsgDelegateAllocations -MsgDelegateAllocations defines sdk.Msg for delegating allocation rights from a validator -to another address, must be signed by an active validator - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `delegate` | [string](#string) | | delegate account address | -| `validator` | [string](#string) | | validator operator address | - - - - - - - - -### MsgDelegateAllocationsResponse -MsgDelegateAllocationsResponse is the response type for the Msg/DelegateAllocations gRPC method. - - - - - @@ -280,9 +253,8 @@ MsgService defines the msgs that the oracle module handles. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `DelegateAllocations` | [MsgDelegateAllocations](#allocation.v1.MsgDelegateAllocations) | [MsgDelegateAllocationsResponse](#allocation.v1.MsgDelegateAllocationsResponse) | DelegateAllocations defines a message that delegates the allocating to an account address. | | -| `AllocationPrecommit` | [MsgAllocationPrecommit](#allocation.v1.MsgAllocationPrecommit) | [MsgAllocationPrecommitResponse](#allocation.v1.MsgAllocationPrecommitResponse) | OracleDataPrevote defines a message that commits a hash of a oracle data feed before the data is actually submitted. | | -| `AllocationCommit` | [MsgAllocationCommit](#allocation.v1.MsgAllocationCommit) | [MsgAllocationCommitResponse](#allocation.v1.MsgAllocationCommitResponse) | OracleDataVote defines a message to submit the actual oracle data that was committed by the feeder through the prevote. | | +| `AllocationPrecommit` | [MsgAllocationPrecommit](#allocation.v1.MsgAllocationPrecommit) | [MsgAllocationPrecommitResponse](#allocation.v1.MsgAllocationPrecommitResponse) | AllocationPrecommit defines a message that commits a hash of allocation data feed before the data is actually submitted. | | +| `AllocationCommit` | [MsgAllocationCommit](#allocation.v1.MsgAllocationCommit) | [MsgAllocationCommitResponse](#allocation.v1.MsgAllocationCommitResponse) | AllocationCommit defines a message to submit the actual allocation data that was committed by the feeder through the pre-commit. | | @@ -304,7 +276,7 @@ GenesisState - all allocation state that must be provided at genesis | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `params` | [Params](#allocation.v1.Params) | | | -| `feeder_delegations` | [MsgDelegateAllocations](#allocation.v1.MsgDelegateAllocations) | repeated | | +| `cellars` | [Cellar](#allocation.v1.Cellar) | repeated | | @@ -374,6 +346,31 @@ QueryAllocationCommitResponse is the response type for the Query/Queryallocation + + +### QueryAllocationCommitsRequest +QueryAllocationCommitsRequest is the request type for the Query/QueryAllocationCommits gRPC method. + + + + + + + + +### QueryAllocationCommitsResponse +QueryAllocationCommitsResponse is the response type for the Query/QueryAllocationCommits gRPC method. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `commits` | [Allocation](#allocation.v1.Allocation) | repeated | votes containing the allocation feed submitted within the latest voting period | + + + + + + ### QueryAllocationPrecommitRequest @@ -393,7 +390,7 @@ QueryAllocationPrecommitRequest is the request type for the Query/AllocationPrec ### QueryAllocationPrecommitResponse -QueryAllocationPrecommitResponse is the response type for the Query/QueryallocationDataPrevote gRPC method. +QueryAllocationPrecommitResponse is the response type for the Query/AllocationPrecommit gRPC method. | Field | Type | Label | Description | @@ -405,112 +402,102 @@ QueryAllocationPrecommitResponse is the response type for the Query/Queryallocat - + -### QueryCommitPeriodRequest -QueryCommitPeriodRequest is the request type for the Query/VotePeriod gRPC method. +### QueryAllocationPrecommitsRequest +QueryAllocationPrecommitsRequest is the request type for the Query/AllocationPrecommits gRPC method. - + -### QueryCommitPeriodResponse -QueryCommitPeriodResponse is the response type for the Query/VotePeriod gRPC method. +### QueryAllocationPrecommitsResponse +QueryAllocationPrecommitResponse is the response type for the Query/AllocationPrecommits gRPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `current_height` | [int64](#int64) | | block height at which the query was processed | -| `vote_period_start` | [int64](#int64) | | latest vote period start block height | -| `vote_period_end` | [int64](#int64) | | block height at which the current voting period ends | - +| `precommits` | [AllocationPrecommit](#allocation.v1.AllocationPrecommit) | repeated | prevote submitted within the latest voting period | - -### QueryDelegateAddressRequest -QueryDelegateAddressRequest is the request type for the Query/QueryDelegateAddress gRPC method. + +### QueryCellarsRequest +QueryCellarsRequest is the request type for Query/QueryCellars gRPC method. -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `validator` | [string](#string) | | validator operator address | + - - -### QueryDelegateAddressResponse -QueryDelegateAddressResponse is the response type for the Query/QueryDelegateAddress gRPC method. +### QueryCellarsResponse +QueryCellarsResponse is the response type for Query/QueryCellars gRPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `delegate` | [string](#string) | | delegate account address | +| `cellars` | [Cellar](#allocation.v1.Cellar) | repeated | | - + -### QueryParamsRequest -QueryParamsRequest is the request type for the Query/Params gRPC method. +### QueryCommitPeriodRequest +QueryCommitPeriodRequest is the request type for the Query/QueryCommitPeriod gRPC method. - + -### QueryParamsResponse -QueryParamsRequest is the response type for the Query/Params gRPC method. +### QueryCommitPeriodResponse +QueryCommitPeriodResponse is the response type for the Query/QueryCommitPeriod gRPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `params` | [Params](#allocation.v1.Params) | | allocation parameters | - - +| `current_height` | [int64](#int64) | | block height at which the query was processed | +| `vote_period_start` | [int64](#int64) | | latest vote period start block height | +| `vote_period_end` | [int64](#int64) | | block height at which the current voting period ends | - -### QueryValidatorAddressRequest -QueryValidatorAddressRequest is the request type for the Query/Params gRPC method. + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `delegate` | [string](#string) | | delegate account address | +### QueryParamsRequest +QueryParamsRequest is the request type for the Query/Params gRPC method. - + -### QueryValidatorAddressResponse -QueryValidatorAddressResponse is the response type for the Query/Params gRPC method. +### QueryParamsResponse +QueryParamsRequest is the response type for the Query/Params gRPC method. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| `validator` | [string](#string) | | validator operator address | +| `params` | [Params](#allocation.v1.Params) | | allocation parameters | @@ -531,11 +518,12 @@ Query defines the gRPC querier service for the allocation module. | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | | `QueryParams` | [QueryParamsRequest](#allocation.v1.QueryParamsRequest) | [QueryParamsResponse](#allocation.v1.QueryParamsResponse) | QueryParams queries the allocation module parameters. | GET|/sommelier/allocation/v1/params| -| `QueryDelegateAddress` | [QueryDelegateAddressRequest](#allocation.v1.QueryDelegateAddressRequest) | [QueryDelegateAddressResponse](#allocation.v1.QueryDelegateAddressResponse) | QueryDelegateAddress queries the delegate account address of a validator | GET|/sommelier/allocation/v1/delegates/{validator}| -| `QueryValidatorAddress` | [QueryValidatorAddressRequest](#allocation.v1.QueryValidatorAddressRequest) | [QueryValidatorAddressResponse](#allocation.v1.QueryValidatorAddressResponse) | QueryValidatorAddress returns the validator address of a given delegate | GET|/sommelier/allocation/v1/validators/{delegate}| -| `QueryAllocationPrecommit` | [QueryAllocationPrecommitRequest](#allocation.v1.QueryAllocationPrecommitRequest) | [QueryAllocationPrecommitResponse](#allocation.v1.QueryAllocationPrecommitResponse) | QueryAllocationPrecommit queries the validator prevote in the current voting period | GET|/sommelier/allocation/v1/precommits/{validator}| -| `QueryAllocationCommit` | [QueryAllocationCommitRequest](#allocation.v1.QueryAllocationCommitRequest) | [QueryAllocationCommitResponse](#allocation.v1.QueryAllocationCommitResponse) | QueryAllocationCommit queries the validator vote in the current voting period | GET|/sommelier/allocation/v1/commits/{validator}| +| `QueryAllocationPrecommit` | [QueryAllocationPrecommitRequest](#allocation.v1.QueryAllocationPrecommitRequest) | [QueryAllocationPrecommitResponse](#allocation.v1.QueryAllocationPrecommitResponse) | QueryAllocationPrecommit queries the validator prevote in the current voting period | GET|/sommelier/allocation/v1/precommits/{validator}/{cellar}| +| `QueryAllocationPrecommits` | [QueryAllocationPrecommitsRequest](#allocation.v1.QueryAllocationPrecommitsRequest) | [QueryAllocationPrecommitsResponse](#allocation.v1.QueryAllocationPrecommitsResponse) | QueryAllocationPrecommits queries all allocation precommits in the voting period | GET|/sommelier/allocation/v1/precommits| +| `QueryAllocationCommit` | [QueryAllocationCommitRequest](#allocation.v1.QueryAllocationCommitRequest) | [QueryAllocationCommitResponse](#allocation.v1.QueryAllocationCommitResponse) | QueryAllocationCommit queries the validator vote in the current voting period | GET|/sommelier/allocation/v1/commits/{validator}/{cellar}| +| `QueryAllocationCommits` | [QueryAllocationCommitsRequest](#allocation.v1.QueryAllocationCommitsRequest) | [QueryAllocationCommitsResponse](#allocation.v1.QueryAllocationCommitsResponse) | QueryAllocationCommits queries all validator allocation commits | GET|/sommelier/allocation/v1/commits| | `QueryCommitPeriod` | [QueryCommitPeriodRequest](#allocation.v1.QueryCommitPeriodRequest) | [QueryCommitPeriodResponse](#allocation.v1.QueryCommitPeriodResponse) | QueryVotePeriod queries the heights for the current voting period (current, start and end) | GET|/sommelier/allocation/v1/commit_period| +| `QueryCellars` | [QueryCellarsRequest](#allocation.v1.QueryCellarsRequest) | [QueryCellarsResponse](#allocation.v1.QueryCellarsResponse) | QueryCellars returns all cellars and current tick ranges | GET|/sommelier/allocation/v1/cellars| diff --git a/go.mod b/go.mod index a1f277b4..da949123 100644 --- a/go.mod +++ b/go.mod @@ -3,25 +3,43 @@ module github.com/peggyjv/sommelier go 1.15 require ( + github.com/Microsoft/go-winio v0.5.0 // indirect + github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect + github.com/cenkalti/backoff/v4 v4.1.1 // indirect + github.com/containerd/continuity v0.1.0 // indirect github.com/cosmos/cosmos-sdk v0.44.0 + github.com/cosmos/go-bip39 v1.0.0 github.com/cosmos/ibc-go v1.0.1 github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea - github.com/ethereum/go-ethereum v1.10.1 + github.com/ethereum/go-ethereum v1.10.8 + github.com/go-ole/go-ole v1.2.4 // indirect github.com/gogo/protobuf v1.3.3 github.com/golang/protobuf v1.5.2 + github.com/google/go-cmp v0.5.6 // indirect github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/peggyjv/gravity-bridge/module v0.2.0 + github.com/klauspost/compress v1.11.0 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/lib/pq v1.9.0 // indirect + github.com/miguelmota/go-ethereum-hdwallet v0.1.1 + github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect + github.com/onsi/ginkgo v1.16.1 // indirect + github.com/onsi/gomega v1.11.0 // indirect + github.com/opencontainers/runc v1.0.1 // indirect + github.com/ory/dockertest/v3 v3.7.0 + github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923174501-aea3338bb368 + //github.com/peggyjv/gravity-bridge/module v0.2.0 github.com/rakyll/statik v0.1.7 github.com/regen-network/cosmos-proto v0.3.1 - github.com/spf13/cast v1.3.1 - github.com/spf13/cobra v1.1.3 + github.com/spf13/cast v1.4.0 + github.com/spf13/cobra v1.2.1 + github.com/spf13/viper v1.8.1 github.com/stretchr/testify v1.7.0 github.com/tendermint/tendermint v0.34.12 github.com/tendermint/tm-db v0.6.4 - golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect - google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c - google.golang.org/grpc v1.38.0 + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect + google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced + google.golang.org/grpc v1.39.1 ) replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 diff --git a/go.sum b/go.sum index 411c0643..1120e721 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= @@ -47,6 +48,9 @@ github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5 github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= @@ -67,14 +71,21 @@ github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.5.0 h1:Elr9Wn+sGKPlkaBvwu4mTrxtmOp3F3yV9qhaHbXGjwU= +github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.5.7 h1:4y6y0G8PRzszQUYIQHHssv/jgPHAb5qQuuDNdCbyAgw= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= +github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= +github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.52 h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI= @@ -88,8 +99,9 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc= +github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= @@ -99,6 +111,8 @@ github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1: github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.6/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.8/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -107,12 +121,22 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= @@ -140,7 +164,11 @@ github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtE github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= @@ -148,13 +176,16 @@ github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= @@ -164,9 +195,12 @@ github.com/confio/ics23/go v0.0.0-20200817220745-f173e6211efb/go.mod h1:E45Nqnlp github.com/confio/ics23/go v0.6.3/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/confio/ics23/go v0.6.6 h1:pkOy18YxxJ/r0XFDCnrl4Bjv6h4LkBSpLS6F38mrKL8= github.com/confio/ics23/go v0.6.6/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= -github.com/consensys/bavard v0.1.8-0.20210105233146-c16790d2aa8b/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= -github.com/consensys/goff v0.3.10/go.mod h1:xTldOBEHmFiYS0gPXd3NsaEqZWlnmeWcRLWgD3ba3xc= -github.com/consensys/gurvy v0.3.8/go.mod h1:sN75xnsiD593XnhbhvG2PkOy194pZBzqShWF/kwuW/g= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= +github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -178,6 +212,7 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/cosmos-sdk v0.42.4-0.20210623214207-eb0fc466c99b/go.mod h1:xiLp1G8mumj82S5KLJGCAyeAlD+7VNomg/aRSJV12yk= github.com/cosmos/cosmos-sdk v0.43.0/go.mod h1:ctcrTEAhei9s8O3KSNvL0dxe+fVQGp07QyRb/7H9JYE= github.com/cosmos/cosmos-sdk v0.44.0 h1:eOSjACNtTnThEJ62IsS+pMm3OIU6hgMVqrp4TZClLZo= github.com/cosmos/cosmos-sdk v0.44.0/go.mod h1:orG0jzFJ2KsDfzLd/X0JSOMzF4Oxc/BQz2GkcYF4gRE= @@ -199,6 +234,11 @@ github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwc github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= +github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= @@ -209,6 +249,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0= github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= @@ -224,7 +266,15 @@ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WA github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/docker/cli v20.10.7+incompatible h1:pv/3NqibQKphWZiAskMzdz8w0PRbtTaEB+f6NwdU7Is= +github.com/docker/cli v20.10.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.7+incompatible h1:Z6O9Nhsjv+ayUEeI1IojKbYcsGdgYSNqxe1s2MYzUhQ= +github.com/docker/docker v20.10.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= @@ -237,14 +287,17 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25 h1:2vLKys4RBU4pn2T/hjXMbvwTr1Cvy5THHrQkbeY9HRk= github.com/enigmampc/btcutil v1.0.3-0.20200723161021-e2fb6adb2a25/go.mod h1:hTr8+TLQmkUkgcuh3mcr5fjrT9c64ZzsBCdCEC6UppY= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/go-ethereum v1.9.23/go.mod h1:JIfVb6esrqALTExdz9hRYvrP0xBDf6wCncIu1hNwHpM= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= -github.com/ethereum/go-ethereum v1.10.1 h1:bGQezu+kqqRBczcSAruEoqVzTjtkeDnUGI2I4uroyUE= -github.com/ethereum/go-ethereum v1.10.1/go.mod h1:E5e/zvdfUVr91JZ0AwjyuJM3x+no51zZJRz61orLLSk= +github.com/ethereum/go-ethereum v1.10.4/go.mod h1:nEE0TP5MtxGzOMd7egIrbPJMQBnhVU3ELNxhBglIzhg= +github.com/ethereum/go-ethereum v1.10.8 h1:0UP5WUR8hh46ffbjJV7PK499+uGEyasRIfffS0vy06o= +github.com/ethereum/go-ethereum v1.10.8/go.mod h1:pJNuIUYfX5+JKzSD/BTdNsvJSZ1TJqmz0dVyXMAbf6M= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51 h1:0JZ+dUmQeA8IIVUMzysrX4/AKuQwWhV2dYQuPZdvdSQ= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= @@ -257,16 +310,21 @@ github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGE github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= @@ -274,6 +332,7 @@ github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -286,8 +345,11 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= +github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= @@ -301,6 +363,7 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= @@ -351,8 +414,12 @@ github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3 h1:ur2rms48b3Ep1dxh7aUV2FZEQ8jEVO2F6ILKx8ofkAg= +github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.2/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -367,8 +434,9 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa h1:Q75Upo5UN4JbPFURXZ8nLKYUvF85dyFRop/vQ0Rv+64= @@ -390,6 +458,8 @@ github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -471,13 +541,19 @@ github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87/go.mod github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.2.0 h1:gpSYcPLWGv4sG43I2mVLiDZCNDh/EpGjSk8tmtxitHM= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= -github.com/huin/goupnp v1.0.1-0.20200620063722-49508fba0031/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo= +github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo= +github.com/huin/goupnp v1.0.2 h1:RfGLP+h3mvisuWEyybxNq5Eft3NWhHLPeUN72kpKZoI= +github.com/huin/goupnp v1.0.2/go.mod h1:0dxJBVBHqTMjIUMkESDTNgOOx/Mw5wYIfyFmdzSamkM= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/improbable-eng/grpc-web v0.14.0 h1:GdoK+cXABdB+1keuqsV1drSFO2XLYIxqt/4Rj8SWGBk= github.com/improbable-eng/grpc-web v0.14.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= @@ -485,13 +561,17 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458 h1:6OvNmYgJyexcZ3pYbTI9jWx5tHo1Dee/tWbLMfPe2TA= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -499,6 +579,8 @@ github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJS github.com/jhump/protoreflect v1.8.2 h1:k2xE7wcUomeqwY0LDCYA16y4WWfyTcMx5mKhk0d4ua0= github.com/jhump/protoreflect v1.8.2/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -521,35 +603,43 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356 h1:I/yrLt2WilKxlQKCM52clh5rGzTKpVctGT1lH4Dc8Jw= github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= -github.com/kilic/bls12-381 v0.0.0-20201226121925-69dacb279461/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.3 h1:OP96hzwJVBIHYU52pVTI6CczrxPvrGfgqF9N5eTO0Q8= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.0 h1:wJbzvpYMVGG9iTI9VxpnNZfd4DzMPoCWze3GgSqz8yg= +github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leanovate/gopter v0.2.8/go.mod h1:gNcbPWNEWRe4lm+bycKqxUYoH5uoVje5SkOJ3uoLer8= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v0.0.0-20180327071824-d34b9ff171c2/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.9.0 h1:L8nSXQQzAYByakOFMTwpjRoHsMJklur4Gi59b6VivR8= +github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -557,28 +647,40 @@ github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0U github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miguelmota/go-ethereum-hdwallet v0.1.1 h1:zdXGlHao7idpCBjEGTXThVAtMKs+IxAgivZ75xqkWK0= +github.com/miguelmota/go-ethereum-hdwallet v0.1.1/go.mod h1:f9m9uXokAHA6WNoYOPjj4AqjJS5pquQRiYYj/XSyPYc= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643 h1:hLDRPB66XQT/8+wG9WsDpiCvZf1yKO7sz7scAjSlBa0= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.1 h1:dZ6IIu8Z14VlC0VpfKofAhCy74wu/Qb5gcn52yWoz/0= @@ -595,12 +697,17 @@ github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= +github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= @@ -620,26 +727,40 @@ github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c h1:1RHs3tNxjXGHeul8z2t6H2N2TlAqpKe5yryJztRx4Jk= github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.1 h1:foqVmeWDD6yYpK+Yz3fHyNIxFYNxswxqNFjSKe+vI54= +github.com/onsi/ginkgo v1.16.1/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.11.0 h1:+CqWgvj0OZycCaqclBD1pxKHAU+tOkHmQIWvDHq2aug= +github.com/onsi/gomega v1.11.0/go.mod h1:azGKhqFUon9Vuj0YmTfLSmx0FUwqXYSTl5re8lQLTUg= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.1 h1:G18PGckGdAm3yVQRWDVQ1rLSLntiniKJ0cNRT2Tm5gs= +github.com/opencontainers/runc v1.0.1/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -649,6 +770,9 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest/v3 v3.7.0 h1:Bijzonc69Ont3OU0a3TWKJ1Rzlh3TsDXP1JrTAkSmsM= +github.com/ory/dockertest/v3 v3.7.0/go.mod h1:PvCCgnP7AfBZeVrzwiUTjZx/IUXlGLC1zQlUQrLIlUE= +github.com/otiai10/copy v1.4.2/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/copy v1.6.0 h1:IinKAryFFuPONZ7cm6T6E2QX/vcJwSnlaA5lfoaXIiQ= github.com/otiai10/copy v1.6.0/go.mod h1:XWfuS3CrI0R6IE0FbgHsEazaXO8G0LpMp9o8tos0x4E= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= @@ -664,9 +788,38 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/peggyjv/gravity-bridge v0.2.14-0.20210921161853-f1d4f87ae7c9 h1:WDPiKE3GMfyLTxSmGPDkzohBB/Exc499ordTmkiJCH4= +github.com/peggyjv/gravity-bridge v0.2.14-0.20210921161853-f1d4f87ae7c9/go.mod h1:L/DURDpaTjvtTdZ4kXigClTB8kiJwZ6Kdn71I5QG8Vc= +github.com/peggyjv/gravity-bridge/module v0.1.11/go.mod h1:4B3zuU7z0FdUGKRbGwFQuCeK+Il+jrW86wU3cG8YCkQ= github.com/peggyjv/gravity-bridge/module v0.2.0 h1:1sAoILN/KKOSRlrVEu2RzAUYNm5NyNRbA0LnXJSNejY= github.com/peggyjv/gravity-bridge/module v0.2.0/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210921161853-f1d4f87ae7c9 h1:Bh5H8K+pG6SV9RgIg6BHlXbTJzY71NEiu+w/qILv1D4= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210921161853-f1d4f87ae7c9/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210921163948-047a771c58ec h1:ksZVkh/5SgBWY3Pyud+EwHd2ryUpP5+J0iLzRIv5W/A= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210921163948-047a771c58ec/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210921210619-0b020d6c912d h1:1J3TlaRbiGQwd+ViIY3KRlRI42JM+Mb0ZxfXKhgAS9s= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210921210619-0b020d6c912d/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210922143031-4bcab2a393fb h1:Q2V9bO4rsmMMN/DfX/STLn8XLGze4Kt/ON0S52DEdEg= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210922143031-4bcab2a393fb/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923103644-20e88fa11204 h1:IB75wDowmZd+nJSkRfk7wWi4T+7bIuZkXJCJg5A+7G0= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923103644-20e88fa11204/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923105552-7388239b5dd5 h1:StRA6lSWeDF6KLjMfiBPNww7wrQHpffNNueNK5revTc= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923105552-7388239b5dd5/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923115718-9b03a9f9793f h1:XqDEiLnH4hUEgzdDr264d4WtiHgfq2e9g9pdt4VYUHo= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923115718-9b03a9f9793f/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923123947-40b8bae92615 h1:8NsjmywiT9eCxt43Mb2fTCerbyYUzHmlVb/2TJ/XVrY= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923123947-40b8bae92615/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923151028-99e0cbded492 h1:YVnusEEz3v+sbJhjfxerokyjd/kh7o3hrosEwdoSwPQ= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923151028-99e0cbded492/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923171648-5a613e3b6fdd h1:3NL9sTb9TXIw+qdzTuswwIZSY2hfbReVyKovrOYPcGI= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923171648-5a613e3b6fdd/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923172908-571430b3ec42 h1:LYVoLsj8Ba9KBg9CzL2uIbnjoUGD5f4HuBhO7/p31Nk= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923172908-571430b3ec42/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923174501-aea3338bb368 h1:/Sfzs2wgPOq1pzp6qI43OSWxKqHDTPKQC3wOIrf8mcI= +github.com/peggyjv/gravity-bridge/module v0.2.14-0.20210923174501-aea3338bb368/go.mod h1:gixjqIjdEb0CC0Kp4bLaJRoFSMG+irz3qU6gWwmNHik= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -695,6 +848,7 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.8.0/go.mod h1:O9VU6huf47PktckDQfMTX0Y8tY0/7TSWwj+ITvv0TnM= +github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -713,6 +867,9 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.14.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.29.0 h1:3jqPBvKT4OHAbje2Ql7KeaaSicDBCxMYwEJU1zRJceE= github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= @@ -748,6 +905,8 @@ github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo= +github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM= github.com/rs/zerolog v1.23.0 h1:UskrK+saS9P9Y789yNNulYKdARjPZuS35B8gJF2x60g= github.com/rs/zerolog v1.23.0/go.mod h1:6c7hFfxPOy7TacJc4Fcdi24/J0NKYGzjG8FWRI916Qo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -758,16 +917,22 @@ github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZ github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxrTy6/VgfVoLuVLFJcURKLH49ie0zSch7gh4= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v2.20.5+incompatible h1:tYH07UPoQt0OCQdgWWMgYHy3/a9bcxNpBIysykNIP7I= github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= @@ -779,17 +944,20 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.3.4/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.4.0 h1:WhlbjwB9EGCc8W5Rxdkus+wmH2ASRwwTJk6tgHKwdqQ= +github.com/spf13/cast v1.4.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -801,8 +969,10 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.8.0 h1:QRwDgoG8xX+kp69di68D+YYTCWfYEckbZRfUlEIAal0= github.com/spf13/viper v1.8.0/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 h1:Gb2Tyox57NRNuZ2d3rmvB3pcmbu7O1RS3m8WRx7ilrg= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= @@ -823,8 +993,10 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca h1:Ld/zXl5t4+D69SiV4JoN7kkfvJdOWlPpfxrzxpLMoUk= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= +github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 h1:xQdMZ1WLrgkkvOZ/LDQxjVxMLdby7osSh4ZEVa5sIjs= +github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= @@ -836,6 +1008,7 @@ github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoM github.com/tendermint/tendermint v0.34.0-rc4/go.mod h1:yotsojf2C1QBOw4dZrTcxbyxmPUrT4hNuOQWX9XUwB4= github.com/tendermint/tendermint v0.34.0-rc6/go.mod h1:ugzyZO5foutZImv0Iyx/gOFCX6mjJTgbLHTwi17VDVg= github.com/tendermint/tendermint v0.34.0/go.mod h1:Aj3PIipBFSNO21r+Lq3TtzQ+uKESxkbA3yo/INM4QwQ= +github.com/tendermint/tendermint v0.34.8/go.mod h1:JVuu3V1ZexOaZG8VJMRl8lnfrGw6hEB2TVnoUwKRbss= github.com/tendermint/tendermint v0.34.10/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= github.com/tendermint/tendermint v0.34.11/go.mod h1:aeHL7alPh4uTBIJQ8mgFEE8VwJLXI1VD3rVOmH2Mcy0= github.com/tendermint/tendermint v0.34.12 h1:m+kUYNhONedhJfHmHG8lqsdZvbR5t6vmhaok1yXjpKg= @@ -849,10 +1022,15 @@ github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JT github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.0.2 h1:+t3w+KwLXO6154GNJY+qUtIxLTmFjfUmpguQT1OlOT8= github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= @@ -862,10 +1040,23 @@ github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -1016,13 +1207,17 @@ golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5 h1:wjuX4b5yYQnEQHzd+CBcrcC6OVR2J1CN6mUy0oSxIPo= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1046,6 +1241,7 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1057,21 +1253,25 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1098,27 +1298,35 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210105210732-16f7687f5001/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912 h1:uCLL3g5wH2xjxVREVuAbP9JM5PPKjRbXKRa6IBjkzmU= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1135,6 +1343,9 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1148,8 +1359,10 @@ golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1190,11 +1403,13 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1279,13 +1494,15 @@ google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210114201628-6edceaf6022f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced h1:c5geK1iMU3cDKtFrCVQIcjR3W+JOZMuhIyICMCTbtus= +google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1314,13 +1531,16 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0= gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -1336,7 +1556,10 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= +gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1344,6 +1567,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/integration_tests/chain.go b/integration_tests/chain.go new file mode 100644 index 00000000..e5bb8bd5 --- /dev/null +++ b/integration_tests/chain.go @@ -0,0 +1,302 @@ +package integration_tests + +import ( + "fmt" + "io/ioutil" + "os" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/cosmos/cosmos-sdk/codec" + sdkTypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/simapp" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + sdkTx "github.com/cosmos/cosmos-sdk/x/auth/tx" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + gravitytypes "github.com/peggyjv/gravity-bridge/module/x/gravity/types" + "github.com/peggyjv/sommelier/app" + "github.com/peggyjv/sommelier/app/params" + "github.com/peggyjv/sommelier/x/allocation/types" + tmrand "github.com/tendermint/tendermint/libs/rand" + rpchttp "github.com/tendermint/tendermint/rpc/client/http" +) + +const ( + keyringPassphrase = "testpassphrase" + keyringAppName = "testnet" +) + +var ( + encodingConfig params.EncodingConfig + cdc codec.Codec +) + +func init() { + encodingConfig = app.MakeEncodingConfig() + + encodingConfig.InterfaceRegistry.RegisterImplementations( + (*sdk.Msg)(nil), + &stakingtypes.MsgCreateValidator{}, + &stakingtypes.MsgBeginRedelegate{}, + &gravitytypes.MsgDelegateKeys{}, + ) + encodingConfig.InterfaceRegistry.RegisterImplementations( + (*cryptotypes.PubKey)(nil), + &secp256k1.PubKey{}, + &ed25519.PubKey{}, + ) + + cdc = encodingConfig.Marshaler +} + +type chain struct { + dataDir string + id string + validators []*validator + orchestrators []*orchestrator +} + +func newChain() (*chain, error) { + var dir string + var err error + if _, found := os.LookupEnv("CI"); found { + dir, err = os.Getwd() + if err != nil { + return nil, err + } + } + + tmpDir, err := ioutil.TempDir(dir, "somm-e2e-testnet") + if err != nil { + return nil, err + } + + return &chain{ + id: "chain-" + tmrand.NewRand().Str(6), + dataDir: tmpDir, + }, nil +} + +func (c *chain) configDir() string { + return fmt.Sprintf("%s/%s", c.dataDir, c.id) +} + +func (c *chain) createAndInitValidators(count int) error { + for i := 0; i < count; i++ { + node := c.createValidator(i) + + // generate genesis files + if err := node.init(); err != nil { + return err + } + + c.validators = append(c.validators, node) + + // create keys + if err := node.createKey("val"); err != nil { + return err + } + if err := node.createNodeKey(); err != nil { + return err + } + if err := node.createConsensusKey(); err != nil { + return err + } + } + + return nil +} + +func (c *chain) createAndInitValidatorsWithMnemonics(mnemonics []string) error { + for i := 0; i < len(mnemonics); i++ { + // create node + node := c.createValidator(i) + + // generate genesis files + if err := node.init(); err != nil { + return err + } + + c.validators = append(c.validators, node) + + // create keys + if err := node.createKeyFromMnemonic("val", mnemonics[i], ""); err != nil { + return err + } + if err := node.createNodeKey(); err != nil { + return err + } + if err := node.createConsensusKey(); err != nil { + return err + } + } + + return nil +} + +func (c *chain) createAndInitOrchestrators(count int) error { + mnemonics := make([]string, count) + for i := 0; i < count; i++ { + mnemonic, err := createMnemonic() + if err != nil { + return err + } + mnemonics = append(mnemonics, mnemonic) + } + + return c.createAndInitOrchestratorsWithMnemonics(mnemonics) +} + +func (c *chain) createAndInitOrchestratorsWithMnemonics(mnemonics []string) error { + hdPath := hd.CreateHDPath(sdk.CoinType, 1, 0) + + for i := 0; i < len(mnemonics); i++ { + // create orchestrator + orchestrator := c.createOrchestrator(i) + + // create keys + info, kb, err := createMemoryKeyFromMnemonic("orch", mnemonics[i], "", hdPath) + if err != nil { + return err + } + + orchestrator.keyInfo = *info + orchestrator.mnemonic = mnemonics[i] + orchestrator.keyring = kb + + c.orchestrators = append(c.orchestrators, orchestrator) + } + + return nil +} + +func (c *chain) createValidator(index int) *validator { + return &validator{ + chain: c, + index: index, + moniker: "sommelier", + } +} + +func (c *chain) createOrchestrator(index int) *orchestrator { + return &orchestrator{ + index: index, + } +} + +func (c *chain) clientContext(nodeURI string, kb *keyring.Keyring, fromName string, fromAddr sdk.AccAddress) (*client.Context, error) { + amino := codec.NewLegacyAmino() + interfaceRegistry := sdkTypes.NewInterfaceRegistry() + interfaceRegistry.RegisterImplementations((*sdk.Msg)(nil), + &stakingtypes.MsgCreateValidator{}, + &gravitytypes.MsgDelegateKeys{}, + &types.MsgAllocationCommit{}, + &types.MsgAllocationPrecommit{}, + ) + interfaceRegistry.RegisterImplementations((*cryptotypes.PubKey)(nil), &secp256k1.PubKey{}, &ed25519.PubKey{}) + + protoCodec := codec.NewProtoCodec(interfaceRegistry) + txCfg := sdkTx.NewTxConfig(protoCodec, sdkTx.DefaultSignModes) + + encodingConfig := params.EncodingConfig{ + InterfaceRegistry: interfaceRegistry, + Marshaler: protoCodec, + TxConfig: txCfg, + Amino: amino, + } + simapp.ModuleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino) + simapp.ModuleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry) + + rpcClient, err := rpchttp.New(nodeURI, "/websocket") + if err != nil { + return nil, err + } + + clientContext := client.Context{}. + WithChainID(c.id). + WithCodec(protoCodec). + WithInterfaceRegistry(encodingConfig.InterfaceRegistry). + WithTxConfig(encodingConfig.TxConfig). + WithLegacyAmino(encodingConfig.Amino). + WithInput(os.Stdin). + WithNodeURI(nodeURI). + WithClient(rpcClient). + WithBroadcastMode(flags.BroadcastBlock). + WithKeyring(*kb). + WithAccountRetriever(authtypes.AccountRetriever{}). + WithOutputFormat("json"). + WithFrom(fromName). + WithFromName(fromName). + WithFromAddress(fromAddr). + WithSkipConfirmation(true) + + return &clientContext, nil +} + +func (c *chain) sendMsgs(clientCtx client.Context, msgs ...sdk.Msg) (*sdk.TxResponse, error) { + txf := tx.Factory{}. + WithAccountRetriever(clientCtx.AccountRetriever). + WithChainID(c.id). + WithTxConfig(clientCtx.TxConfig). + WithGasAdjustment(1.2). + WithKeybase(clientCtx.Keyring). + WithGas(12345678). + WithSignMode(signing.SignMode_SIGN_MODE_DIRECT) + + fromAddr := clientCtx.GetFromAddress() + fromName := clientCtx.GetFromName() + + if err := txf.AccountRetriever().EnsureExists(clientCtx, fromAddr); err != nil { + return nil, err + } + + initNum, initSeq := txf.AccountNumber(), txf.Sequence() + if initNum == 0 || initSeq == 0 { + num, seq, err := txf.AccountRetriever().GetAccountNumberSequence(clientCtx, fromAddr) + if err != nil { + return nil, err + } + + if initNum == 0 { + txf = txf.WithAccountNumber(num) + } + + if initSeq == 0 { + txf = txf.WithSequence(seq) + } + } + + txf.WithFees("246913560testsomm") + + txb, err := txf.BuildUnsignedTx(msgs...) + if err != nil { + return nil, err + } + + txb.SetFeeAmount(sdk.Coins{{Denom: "testsomm", Amount: sdk.NewInt(246913560)}}) + + err = tx.Sign(txf, fromName, txb, false) + if err != nil { + return nil, err + } + + txBytes, err := clientCtx.TxConfig.TxEncoder()(txb.GetTx()) + if err != nil { + return nil, err + } + + res, err := clientCtx.BroadcastTx(txBytes) + if err != nil { + return nil, err + } + + return res, nil +} diff --git a/integration_tests/ethereum.go b/integration_tests/ethereum.go new file mode 100644 index 00000000..f66a84a2 --- /dev/null +++ b/integration_tests/ethereum.go @@ -0,0 +1,25 @@ +package integration_tests + +type EthereumConfig struct { + ChainID uint `json:"chainId"` + HomesteadBlock uint `json:"homesteadBlock"` + EIP150Block uint `json:"eip150Block"` + EIP155Block uint `json:"eip155Block"` + EIP158Block uint `json:"eip158Block"` + ByzantiumBlock uint `json:"byzantiumBlock"` + ConstantinopleBlock uint `json:"constantinopleBlock"` + PetersburgBlock uint `json:"petersburgBlock"` + IstanbulBlock uint `json:"istanbulBlock"` + BerlinBlock uint `json:"berlinBlock"` +} + +type Allocation struct { + Balance string `json:"balance"` +} + +type EthereumGenesis struct { + Difficulty string `json:"difficulty"` + GasLimit string `json:"gasLimit"` + Config EthereumConfig `json:"config"` + Alloc map[string]Allocation `json:"alloc"` +} diff --git a/integration_tests/ethereum/Dockerfile b/integration_tests/ethereum/Dockerfile new file mode 100644 index 00000000..363a14da --- /dev/null +++ b/integration_tests/ethereum/Dockerfile @@ -0,0 +1,16 @@ +FROM node:14-alpine3.13 + +RUN apk update +RUN apk add --no-cache git + +COPY package.json package.json +COPY yarn.lock yarn.lock + +RUN yarn install --production=false +RUN npm config set user 0 + +COPY . . + +EXPOSE 8545 + +CMD yarn start \ No newline at end of file diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.dbg.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.dbg.json new file mode 100644 index 00000000..21beeef3 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.json new file mode 100644 index 00000000..8a63c284 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/GSN/Context.sol/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "@openzeppelin/contracts/GSN/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json new file mode 100644 index 00000000..21beeef3 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json new file mode 100644 index 00000000..d04c27cd --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath", + "sourceName": "@openzeppelin/contracts/math/SafeMath.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dfb1a54a6088a5825eb049cc407f973647ce499f0b0aea96ca6d5a058aa8392864736f6c63430006060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dfb1a54a6088a5825eb049cc407f973647ce499f0b0aea96ca6d5a058aa8392864736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json new file mode 100644 index 00000000..81f769b7 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json new file mode 100644 index 00000000..680e0b1b --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json @@ -0,0 +1,297 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": [ + { + "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": [], + "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": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162000ca538038062000ca5833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001e0565b508051620001ca906004906020840190620001e0565b50506005805460ff191660121790555062000285565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022357805160ff191683800117855562000253565b8280016001018555821562000253579182015b828111156200025357825182559160200191906001019062000236565b506200026192915062000265565b5090565b6200028291905b808211156200026157600081556001016200026c565b90565b610a1080620002956000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610408565b6101736004803603602081101561021b57600080fd5b50356001600160a01b031661045c565b6100b6610477565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d8565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610546565b610173600480360360408110156102a157600080fd5b506001600160a01b038135811691602001351661055a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610585565b8484610589565b50600192915050565b60025490565b600061037f848484610675565b6103f58461038b610585565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152600160205260408120906103c9610585565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107dc16565b610589565b5060019392505050565b60055460ff1690565b6000610363610415610585565b846103f08560016000610426610585565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087316565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e5610585565b846103f0856040518060600160405280602581526020016109b6602591396001600061050f610585565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107dc16565b6000610363610553610585565b8484610675565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ce5760405162461bcd60e51b81526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b0382166106135760405162461bcd60e51b81526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106ba5760405162461bcd60e51b815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b0382166106ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61070a8383836108d4565b61074d8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107dc16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610782908263ffffffff61087316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610830578181015183820152602001610818565b50505050905090810190601f16801561085d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f44aaa12b83ef639767532a7077e79fe2fe83653f943ed12a84ddf191dcba9b464736f6c63430006060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610408565b6101736004803603602081101561021b57600080fd5b50356001600160a01b031661045c565b6100b6610477565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d8565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610546565b610173600480360360408110156102a157600080fd5b506001600160a01b038135811691602001351661055a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610585565b8484610589565b50600192915050565b60025490565b600061037f848484610675565b6103f58461038b610585565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152600160205260408120906103c9610585565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107dc16565b610589565b5060019392505050565b60055460ff1690565b6000610363610415610585565b846103f08560016000610426610585565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087316565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e5610585565b846103f0856040518060600160405280602581526020016109b6602591396001600061050f610585565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107dc16565b6000610363610553610585565b8484610675565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ce5760405162461bcd60e51b81526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b0382166106135760405162461bcd60e51b81526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106ba5760405162461bcd60e51b815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b0382166106ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61070a8383836108d4565b61074d8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107dc16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610782908263ffffffff61087316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610830578181015183820152602001610818565b50505050905090810190601f16801561085d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f44aaa12b83ef639767532a7077e79fe2fe83653f943ed12a84ddf191dcba9b464736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json new file mode 100644 index 00000000..81f769b7 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json new file mode 100644 index 00000000..663a02d9 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "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": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.dbg.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.dbg.json new file mode 100644 index 00000000..81f769b7 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.json new file mode 100644 index 00000000..94337104 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/token/ERC20/SafeERC20.sol/SafeERC20.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bec05811db5af61be8dfdd7a750a0fdaa1ee1757394ba3f72887dd63ae3c553c64736f6c63430006060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bec05811db5af61be8dfdd7a750a0fdaa1ee1757394ba3f72887dd63ae3c553c64736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json new file mode 100644 index 00000000..21beeef3 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json new file mode 100644 index 00000000..928fbb8e --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e47e9df5467d483b4b84f5e9d59c07ba688eaae7d2cd9facb6eb6019b4decc0664736f6c63430006060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e47e9df5467d483b4b84f5e9d59c07ba688eaae7d2cd9facb6eb6019b4decc0664736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json new file mode 100644 index 00000000..21beeef3 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.json b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.json new file mode 100644 index 00000000..52871753 --- /dev/null +++ b/integration_tests/ethereum/artifacts/@openzeppelin/contracts/utils/ReentrancyGuard.sol/ReentrancyGuard.json @@ -0,0 +1,16 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReentrancyGuard", + "sourceName": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/build-info/5e75fa0d261632fee0553f969fc894bc.json b/integration_tests/ethereum/artifacts/build-info/5e75fa0d261632fee0553f969fc894bc.json new file mode 100644 index 00000000..0d4b8fdf --- /dev/null +++ b/integration_tests/ethereum/artifacts/build-info/5e75fa0d261632fee0553f969fc894bc.json @@ -0,0 +1,91599 @@ +{ + "id": "5e75fa0d261632fee0553f969fc894bc", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.7.6", + "solcLongVersion": "0.7.6+commit.7338295f", + "input": { + "language": "Solidity", + "sources": { + "contracts/CellarPoolShare.sol": { + "content": "/**\n *Submitted for verification at Etherscan.io on 2021-08-06\n*/\n\n//SPDX-License-Identifier: Apache-2.0\n// VolumeFi Software, Inc.\n\npragma solidity ^0.7.6;\npragma abicoder v2;\n\ninterface IERC20 {\n event Transfer(address indexed from, address indexed to, uint256 value);\n event Approval(\n address indexed owner,\n address indexed spender,\n uint256 value\n );\n\n function approve(address spender, uint256 amount) external returns (bool);\n\n function transfer(address recipient, uint256 amount)\n external\n returns (bool);\n\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n function allowance(address owner, address spender)\n external\n view\n returns (uint256);\n\n function balanceOf(address account) external view returns (uint256);\n\n function totalSupply() external view returns (uint256);\n}\n\ninterface INonfungiblePositionManager {\n struct MintParams {\n address token0;\n address token1;\n uint24 fee;\n int24 tickLower;\n int24 tickUpper;\n uint256 amount0Desired;\n uint256 amount1Desired;\n uint256 amount0Min;\n uint256 amount1Min;\n address recipient;\n uint256 deadline;\n }\n\n struct IncreaseLiquidityParams {\n uint256 tokenId;\n uint256 amount0Desired;\n uint256 amount1Desired;\n uint256 amount0Min;\n uint256 amount1Min;\n uint256 deadline;\n }\n\n struct DecreaseLiquidityParams {\n uint256 tokenId;\n uint128 liquidity;\n uint256 amount0Min;\n uint256 amount1Min;\n uint256 deadline;\n }\n\n struct CollectParams {\n uint256 tokenId;\n address recipient;\n uint128 amount0Max;\n uint128 amount1Max;\n }\n\n function mint(MintParams calldata params)\n external\n payable\n returns (\n uint256 tokenId,\n uint128 liquidity,\n uint256 amount0,\n uint256 amount1\n );\n\n function increaseLiquidity(IncreaseLiquidityParams calldata params)\n external\n payable\n returns (\n uint128 liquidity,\n uint256 amount0,\n uint256 amount1\n );\n\n function decreaseLiquidity(DecreaseLiquidityParams calldata params)\n external\n payable\n returns (uint256 amount0, uint256 amount1);\n\n function collect(CollectParams calldata params)\n external\n payable\n returns (uint256 amount0, uint256 amount1);\n\n function burn(uint256 tokenId) external payable;\n\n function positions(uint256 tokenId)\n external\n view\n returns (\n uint96 nonce,\n address operator,\n address token0,\n address token1,\n uint24 fee,\n int24 tickLower,\n int24 tickUpper,\n uint128 liquidity,\n uint256 feeGrowthInside0LastX128,\n uint256 feeGrowthInside1LastX128,\n uint128 tokensOwed0,\n uint128 tokensOwed1\n );\n}\n\ninterface ISwapRouter {\n struct ExactInputSingleParams {\n address tokenIn;\n address tokenOut;\n uint24 fee;\n address recipient;\n uint256 deadline;\n uint256 amountIn;\n uint256 amountOutMinimum;\n uint160 sqrtPriceLimitX96;\n }\n\n function exactInputSingle(ExactInputSingleParams calldata params)\n external\n payable\n returns (uint256 amountOut);\n}\n\ninterface IUniswapV3Factory {\n function getPool(\n address tokenA,\n address tokenB,\n uint24 fee\n ) external view returns (address pool);\n}\n\ninterface IUniswapV3Pool {\n function slot0()\n external\n view\n returns (\n uint160 sqrtPriceX96,\n int24 tick,\n uint16 observationIndex,\n uint16 observationCardinality,\n uint16 observationCardinalityNext,\n uint8 feeProtocol,\n bool unlocked\n );\n}\n\nlibrary Address {\n function functionCall(address target, bytes memory data)\n internal\n returns (bytes memory)\n {\n return functionCall(target, data, \"R2\");//\"Address: low-level call failed\"\n }\n\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return\n functionCallWithValue(\n target,\n data,\n value,\n \"R3\"//\"Address: low-level call with value failed\"\n );\n }\n\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(\n address(this).balance >= value,\n \"R4\"//\"insufficient balance for call\"\n );\n require(isContract(target), \"R5\");//\"Address: call to non-contract\"\n\n (bool success, bytes memory returndata) =\n target.call{value: value}(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n function isContract(address account) internal view returns (bool) {\n uint256 size;\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n function _verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) private pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n if (returndata.length > 0) {\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n\nlibrary SafeERC20 {\n using Address for address;\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(\n token,\n abi.encodeWithSelector(token.transfer.selector, to, value)\n );\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(\n token,\n abi.encodeWithSelector(token.transferFrom.selector, from, to, value)\n );\n }\n\n function safeApprove(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"R6\"//\"approve non-zero to non-zero\"\n );\n _callOptionalReturn(\n token,\n abi.encodeWithSelector(token.approve.selector, spender, value)\n );\n }\n\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n bytes memory returndata =\n address(token).functionCall(\n data,\n \"R7\"//\"SafeERC20: low-level call failed\"\n );\n if (returndata.length > 0) {\n require(\n abi.decode(returndata, (bool)),\n \"R8\"//\"ERC20 operation did not succeed\"\n );\n }\n }\n}\n\nlibrary FixedPoint96 {\n uint256 internal constant Q96 = 0x1000000000000000000000000;\n}\n\nlibrary FullMath {\n function mulDiv(\n uint256 a,\n uint256 b,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(a, b, not(0))\n prod0 := mul(a, b)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n if (prod1 == 0) {\n require(denominator > 0);\n assembly {\n result := div(prod0, denominator)\n }\n return result;\n }\n\n require(denominator > prod1);\n\n uint256 remainder;\n assembly {\n remainder := mulmod(a, b, denominator)\n }\n assembly {\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n uint256 twos = -denominator & denominator;\n\n assembly {\n denominator := div(denominator, twos)\n }\n\n assembly {\n prod0 := div(prod0, twos)\n }\n\n assembly {\n twos := add(div(sub(0, twos), twos), 1)\n }\n prod0 |= prod1 * twos;\n\n uint256 inv = (3 * denominator) ^ 2;\n\n inv *= 2 - denominator * inv; // inverse mod 2**8\n inv *= 2 - denominator * inv; // inverse mod 2**16\n inv *= 2 - denominator * inv; // inverse mod 2**32\n inv *= 2 - denominator * inv; // inverse mod 2**64\n inv *= 2 - denominator * inv; // inverse mod 2**128\n inv *= 2 - denominator * inv; // inverse mod 2**256\n\n result = prod0 * inv;\n return result;\n }\n}\n\nlibrary TickMath {\n int24 internal constant MIN_TICK = -887272;\n int24 internal constant MAX_TICK = -MIN_TICK;\n\n function getSqrtRatioAtTick(int24 tick)\n internal\n pure\n returns (uint160 sqrtPriceX96)\n {\n uint256 absTick =\n tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\n require(absTick <= uint256(MAX_TICK), \"T\");\n\n uint256 ratio =\n absTick & 0x1 != 0\n ? 0xfffcb933bd6fad37aa2d162d1a594001\n : 0x100000000000000000000000000000000;\n if (absTick & 0x2 != 0)\n ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\n if (absTick & 0x4 != 0)\n ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\n if (absTick & 0x8 != 0)\n ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\n if (absTick & 0x10 != 0)\n ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\n if (absTick & 0x20 != 0)\n ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\n if (absTick & 0x40 != 0)\n ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\n if (absTick & 0x80 != 0)\n ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\n if (absTick & 0x100 != 0)\n ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\n if (absTick & 0x200 != 0)\n ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\n if (absTick & 0x400 != 0)\n ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\n if (absTick & 0x800 != 0)\n ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\n if (absTick & 0x1000 != 0)\n ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\n if (absTick & 0x2000 != 0)\n ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\n if (absTick & 0x4000 != 0)\n ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\n if (absTick & 0x8000 != 0)\n ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\n if (absTick & 0x10000 != 0)\n ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\n if (absTick & 0x20000 != 0)\n ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\n if (absTick & 0x40000 != 0)\n ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\n if (absTick & 0x80000 != 0)\n ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\n\n if (tick > 0) ratio = type(uint256).max / ratio;\n\n sqrtPriceX96 = uint160(\n (ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1)\n );\n }\n}\n\nlibrary LiquidityAmounts {\n function toUint128(uint256 x) private pure returns (uint128 y) {\n require((y = uint128(x)) == x);\n }\n\n function getLiquidityForAmount0(\n uint160 sqrtRatioAX96,\n uint160 sqrtRatioBX96,\n uint256 amount0\n ) internal pure returns (uint128 liquidity) {\n if (sqrtRatioAX96 > sqrtRatioBX96)\n (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n uint256 intermediate =\n FullMath.mulDiv(sqrtRatioAX96, sqrtRatioBX96, FixedPoint96.Q96);\n return\n toUint128(\n FullMath.mulDiv(\n amount0,\n intermediate,\n sqrtRatioBX96 - sqrtRatioAX96\n )\n );\n }\n\n function getLiquidityForAmount1(\n uint160 sqrtRatioAX96,\n uint160 sqrtRatioBX96,\n uint256 amount1\n ) internal pure returns (uint128 liquidity) {\n if (sqrtRatioAX96 > sqrtRatioBX96)\n (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n return\n toUint128(\n FullMath.mulDiv(\n amount1,\n FixedPoint96.Q96,\n sqrtRatioBX96 - sqrtRatioAX96\n )\n );\n }\n\n function getLiquidityForAmounts(\n uint160 sqrtRatioX96,\n uint160 sqrtRatioAX96,\n uint160 sqrtRatioBX96,\n uint256 amount0,\n uint256 amount1\n ) internal pure returns (uint128 liquidity) {\n if (sqrtRatioAX96 > sqrtRatioBX96)\n (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n if (sqrtRatioX96 <= sqrtRatioAX96) {\n liquidity = getLiquidityForAmount0(\n sqrtRatioAX96,\n sqrtRatioBX96,\n amount0\n );\n } else if (sqrtRatioX96 < sqrtRatioBX96) {\n uint128 liquidity0 =\n getLiquidityForAmount0(sqrtRatioX96, sqrtRatioBX96, amount0);\n uint128 liquidity1 =\n getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioX96, amount1);\n\n liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\n } else {\n liquidity = getLiquidityForAmount1(\n sqrtRatioAX96,\n sqrtRatioBX96,\n amount1\n );\n }\n }\n}\n\ninterface ICellarPoolShare is IERC20 {\n struct MintParams {\n address token0;\n address token1;\n uint24 fee;\n int24 tickLower;\n int24 tickUpper;\n uint256 amount0Desired;\n uint256 amount1Desired;\n uint256 amount0Min;\n uint256 amount1Min;\n address recipient;\n uint256 deadline;\n }\n\n struct MintResult {\n uint256 tokenId;\n uint128 liquidity;\n uint256 amount0;\n uint256 amount1;\n }\n\n struct CellarAddParams {\n uint256 amount0Desired;\n uint256 amount1Desired;\n uint256 amount0Min;\n uint256 amount1Min;\n address recipient;\n uint256 deadline;\n }\n\n struct CellarRemoveParams {\n uint256 tokenAmount;\n uint256 amount0Min;\n uint256 amount1Min;\n address recipient;\n uint256 deadline;\n }\n\n struct CellarTickInfo {\n uint184 tokenId;\n int24 tickUpper;\n int24 tickLower;\n uint24 weight;\n }\n\n struct UintPair {\n uint256 a;\n uint256 b;\n }\n\n event AddedLiquidity(\n address indexed token0,\n address indexed token1,\n uint128 liquidity,\n uint256 amount0,\n uint256 amount1\n );\n\n event RemovedLiquidity(\n address indexed token0,\n address indexed token1,\n uint128 liquidity,\n uint256 amount0,\n uint256 amount1\n );\n\n function addLiquidityForUniV3(CellarAddParams calldata cellarParams)\n external;\n\n function addLiquidityEthForUniV3(CellarAddParams calldata cellarParams)\n external\n payable;\n\n function removeLiquidityFromUniV3(CellarRemoveParams calldata cellarParams)\n external;\n\n function removeLiquidityEthFromUniV3(\n CellarRemoveParams calldata cellarParams\n ) external;\n\n function reinvest() external;\n\n function setValidator(address _validator, bool value) external;\n\n function transferOwnership(address newOwner) external;\n\n function setFee(uint16 newFee) external;\n\n function owner() external view returns (address);\n\n function name() external view returns (string memory);\n\n function symbol() external view returns (string memory);\n\n function decimals() external pure returns (uint8);\n}\n\ninterface IWETH {\n function deposit() external payable;\n\n function withdraw(uint256) external;\n}\n\ncontract BlockLock {\n // how many blocks are the functions locked for\n uint256 private constant BLOCK_LOCK_COUNT = 1;\n // last block for which this address is timelocked\n mapping(address => uint256) public lastLockedBlock;\n\n function lock(address _address) internal {\n lastLockedBlock[_address] = block.number + BLOCK_LOCK_COUNT;\n }\n\n modifier notLocked(address lockedAddress) {\n require(lastLockedBlock[lockedAddress] <= block.number, \"R30\");//\"Locked\"\n _;\n }\n}\n\ncontract CellarPoolShare is ICellarPoolShare, BlockLock {\n using SafeERC20 for IERC20;\n\n address constant NONFUNGIBLEPOSITIONMANAGER =\n 0xC36442b4a4522E871399CD717aBDD847Ab11FE88;\n\n address constant UNISWAPV3FACTORY =\n 0x1F98431c8aD98523631AE4a59f267346ea31F984;\n\n address constant SWAPROUTER =\n 0xE592427A0AEce92De3Edee1F18E0157C05861564;\n\n address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\n\n uint16 constant FEEDOMINATOR = 10000;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n mapping(address => bool) public validator;\n uint256 private _totalSupply;\n address private _owner;\n string private _name;\n string private _symbol;\n\n address public immutable token0;\n address public immutable token1;\n uint24 public immutable feeLevel;\n CellarTickInfo[] public cellarTickInfo;\n bool private _isEntered;\n uint16 public fee = 1000;\n\n constructor(\n string memory name_,\n string memory symbol_,\n address _token0,\n address _token1,\n uint24 _feeLevel,\n CellarTickInfo[] memory _cellarTickInfo\n ) {\n _name = name_;\n _symbol = symbol_;\n require(_token0 < _token1, \"R9\");//\"Tokens are not sorted\"\n token0 = _token0;\n token1 = _token1;\n feeLevel = _feeLevel;\n for (uint256 i = 0; i < _cellarTickInfo.length; i++) {\n require(_cellarTickInfo[i].weight > 0, \"R10\");//\"Weight cannot be zero\"\n require(_cellarTickInfo[i].tokenId == 0, \"R11\");//\"tokenId is not empty\"\n if (i > 0) {\n require(_cellarTickInfo[i].tickUpper <= _cellarTickInfo[i - 1].tickLower, \"R12\");//\"Wrong tick tier\"\n }\n cellarTickInfo.push(\n CellarTickInfo({\n tokenId: 0,\n tickUpper: _cellarTickInfo[i].tickUpper,\n tickLower: _cellarTickInfo[i].tickLower,\n weight: _cellarTickInfo[i].weight\n })\n );\n }\n _owner = msg.sender;\n }\n\n modifier onlyValidator() {\n require(validator[msg.sender], \"R13\");//\"Not validator\"\n _;\n }\n\n modifier nonReentrant() {\n require(!_isEntered, \"R14\");//\"reentrant call\"\n _isEntered = true;\n _;\n _isEntered = false;\n }\n\n function transfer(address recipient, uint256 amount)\n external\n override\n returns (bool)\n {\n _transfer(msg.sender, recipient, amount);\n return true;\n }\n\n function approve(address spender, uint256 amount)\n external\n override\n returns (bool)\n {\n _approve(msg.sender, spender, amount);\n return true;\n }\n\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external override returns (bool) {\n _transfer(sender, recipient, amount);\n uint256 currentAllowance = _allowances[sender][msg.sender];\n require(currentAllowance >= amount, \"R15\");//\"transfer exceeds allowance\"\n _approve(sender, msg.sender, currentAllowance - amount);\n return true;\n }\n\n function addLiquidityForUniV3(CellarAddParams calldata cellarParams)\n external\n override\n notLocked(msg.sender)\n {\n lock(msg.sender);\n require(block.timestamp <= cellarParams.deadline);\n IERC20(token0).safeTransferFrom(\n msg.sender,\n address(this),\n cellarParams.amount0Desired\n );\n\n IERC20(token1).safeTransferFrom(\n msg.sender,\n address(this),\n cellarParams.amount1Desired\n );\n\n (\n uint256 inAmount0,\n uint256 inAmount1,\n uint128 liquidityBefore,\n uint128 liquiditySum\n ) = _addLiquidity(cellarParams);\n\n if (liquidityBefore == 0) {\n _mint(msg.sender, liquiditySum);\n } else {\n _mint(\n msg.sender,\n FullMath.mulDiv(liquiditySum, _totalSupply, liquidityBefore)\n );\n }\n require(inAmount0 >= cellarParams.amount0Min, \"R16\");//\"Less than Amount0Min\"\n require(inAmount1 >= cellarParams.amount1Min, \"R17\");//\"Less than Amount1Min\"\n\n if (cellarParams.amount0Desired > inAmount0) {\n IERC20(token0).safeTransfer(\n msg.sender,\n cellarParams.amount0Desired - inAmount0\n );\n }\n if (cellarParams.amount1Desired > inAmount1) {\n IERC20(token1).safeTransfer(\n msg.sender,\n cellarParams.amount1Desired - inAmount1\n );\n }\n emit AddedLiquidity(token0, token1, liquiditySum, inAmount0, inAmount1);\n }\n\n function addLiquidityEthForUniV3(CellarAddParams calldata cellarParams)\n external\n payable\n override\n nonReentrant\n notLocked(msg.sender)\n {\n lock(msg.sender);\n require(block.timestamp <= cellarParams.deadline);\n if (token0 == WETH) {\n if (msg.value > cellarParams.amount0Desired) {\n payable(msg.sender).transfer(\n msg.value - cellarParams.amount0Desired\n );\n } else {\n require(\n msg.value == cellarParams.amount0Desired,\n \"R18\"//\"Eth not enough\"\n );\n }\n IWETH(WETH).deposit{value: cellarParams.amount0Desired}();\n IERC20(token1).safeTransferFrom(\n msg.sender,\n address(this),\n cellarParams.amount1Desired\n );\n } else {\n require(token1 == WETH, \"R19\");//\"Not Eth Pair\"\n if (msg.value > cellarParams.amount1Desired) {\n payable(msg.sender).transfer(\n msg.value - cellarParams.amount1Desired\n );\n } else {\n require(\n msg.value == cellarParams.amount1Desired,\n \"R18\"\n );\n }\n IWETH(WETH).deposit{value: cellarParams.amount1Desired}();\n IERC20(token0).safeTransferFrom(\n msg.sender,\n address(this),\n cellarParams.amount0Desired\n );\n }\n\n (\n uint256 inAmount0,\n uint256 inAmount1,\n uint128 liquidityBefore,\n uint128 liquiditySum\n ) = _addLiquidity(cellarParams);\n\n if (liquidityBefore == 0) {\n _mint(msg.sender, liquiditySum);\n } else {\n _mint(\n msg.sender,\n FullMath.mulDiv(liquiditySum, _totalSupply, liquidityBefore)\n );\n }\n\n require(inAmount0 >= cellarParams.amount0Min, \"R16\");\n require(inAmount1 >= cellarParams.amount1Min, \"R17\");\n\n uint256 retAmount0 = cellarParams.amount0Desired - inAmount0;\n uint256 retAmount1 = cellarParams.amount1Desired - inAmount1;\n\n if (retAmount0 > 0) {\n if (token0 == WETH) {\n IWETH(WETH).withdraw(retAmount0);\n msg.sender.transfer(retAmount0);\n } else {\n IERC20(token0).safeTransfer(msg.sender, retAmount0);\n }\n }\n if (retAmount1 > 0) {\n if (token1 == WETH) {\n IWETH(WETH).withdraw(retAmount1);\n msg.sender.transfer(retAmount1);\n } else {\n IERC20(token1).safeTransfer(msg.sender, retAmount1);\n }\n }\n emit AddedLiquidity(token0, token1, liquiditySum, inAmount0, inAmount1);\n }\n\n function removeLiquidityEthFromUniV3(\n CellarRemoveParams calldata cellarParams\n ) external override nonReentrant notLocked(msg.sender) {\n lock(msg.sender);\n require(block.timestamp <= cellarParams.deadline);\n (uint256 outAmount0, uint256 outAmount1, uint128 liquiditySum) =\n _removeLiquidity(cellarParams);\n _burn(msg.sender, cellarParams.tokenAmount);\n\n require(outAmount0 >= cellarParams.amount0Min, \"R16\");\n require(outAmount1 >= cellarParams.amount1Min, \"R17\");\n\n if (token0 == WETH) {\n IWETH(WETH).withdraw(outAmount0);\n msg.sender.transfer(outAmount0);\n IERC20(token1).safeTransfer(msg.sender, outAmount1);\n } else {\n require(token1 == WETH, \"R19\");\n IWETH(WETH).withdraw(outAmount1);\n msg.sender.transfer(outAmount1);\n IERC20(token0).safeTransfer(msg.sender, outAmount0);\n }\n emit RemovedLiquidity(\n token0,\n token1,\n liquiditySum,\n outAmount0,\n outAmount1\n );\n }\n\n function removeLiquidityFromUniV3(CellarRemoveParams calldata cellarParams)\n external\n override\n notLocked(msg.sender)\n {\n lock(msg.sender);\n require(block.timestamp <= cellarParams.deadline);\n (uint256 outAmount0, uint256 outAmount1, uint128 liquiditySum) =\n _removeLiquidity(cellarParams);\n _burn(msg.sender, cellarParams.tokenAmount);\n\n require(outAmount0 >= cellarParams.amount0Min, \"R16\");\n require(outAmount1 >= cellarParams.amount1Min, \"R17\");\n\n IERC20(token0).safeTransfer(msg.sender, outAmount0);\n IERC20(token1).safeTransfer(msg.sender, outAmount1);\n emit RemovedLiquidity(\n token0,\n token1,\n liquiditySum,\n outAmount0,\n outAmount1\n );\n }\n\n function reinvest() external override onlyValidator notLocked(msg.sender) {\n CellarTickInfo[] memory _cellarTickInfo = cellarTickInfo;\n uint256 weightSum;\n uint256 balance0;\n uint256 balance1;\n for (uint256 index = 0; index < _cellarTickInfo.length; index++) {\n require(_cellarTickInfo[index].tokenId != 0, \"R20\");//\"NFLP doesnot exist\"\n weightSum += _cellarTickInfo[index].weight;\n (uint256 amount0, uint256 amount1) =\n INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER).collect(\n INonfungiblePositionManager.CollectParams({\n tokenId: _cellarTickInfo[index].tokenId,\n recipient: address(this),\n amount0Max: type(uint128).max,\n amount1Max: type(uint128).max\n })\n );\n balance0 += amount0;\n balance1 += amount1;\n }\n uint256 fee0 = (balance0 * fee) / FEEDOMINATOR;\n uint256 fee1 = (balance1 * fee) / FEEDOMINATOR;\n if (fee0 > 0) {\n IERC20(token0).safeTransfer(_owner, fee0);\n }\n if (fee1 > 0) {\n IERC20(token1).safeTransfer(_owner, fee1);\n }\n balance0 = IERC20(token0).balanceOf(address(this));\n balance1 = IERC20(token1).balanceOf(address(this));\n\n (uint256 inAmount0, uint256 inAmount1, , ) =\n _addLiquidity(\n CellarAddParams({\n amount0Desired: balance0,\n amount1Desired: balance1,\n amount0Min: 0,\n amount1Min: 0,\n recipient: address(this),\n deadline: type(uint256).max\n })\n );\n balance0 -= inAmount0;\n balance1 -= inAmount1;\n (uint160 sqrtPriceX96, , , , , , ) =\n IUniswapV3Pool(\n IUniswapV3Factory(UNISWAPV3FACTORY).getPool(\n token0,\n token1,\n feeLevel\n )\n )\n .slot0();\n if (balance0 * inAmount1 > balance1 * inAmount0) {\n uint256 swapAmount = (balance0 * inAmount1 - balance1 * inAmount0)\n /\n (FullMath.mulDiv(\n FullMath.mulDiv(\n inAmount0,\n sqrtPriceX96,\n FixedPoint96.Q96),\n sqrtPriceX96,\n FixedPoint96.Q96)\n + inAmount1);\n IERC20(token0).safeApprove(SWAPROUTER, swapAmount);\n try ISwapRouter(SWAPROUTER).exactInputSingle(\n ISwapRouter.ExactInputSingleParams({\n tokenIn: token0,\n tokenOut: token1,\n fee: feeLevel,\n recipient: address(this),\n deadline: type(uint256).max,\n amountIn: swapAmount,\n amountOutMinimum: 0,\n sqrtPriceLimitX96: 0\n })\n ) {} catch {}\n IERC20(token0).safeApprove(SWAPROUTER, 0);\n }\n if (balance0 * inAmount1 < balance1 * inAmount0) {\n uint256 swapAmount = (balance1 * inAmount0 - balance0 * inAmount1)\n /\n (FullMath.mulDiv(\n FullMath.mulDiv(\n inAmount1,\n FixedPoint96.Q96,\n sqrtPriceX96),\n FixedPoint96.Q96,\n sqrtPriceX96)\n + inAmount0);\n IERC20(token1).safeApprove(SWAPROUTER, swapAmount);\n try ISwapRouter(SWAPROUTER).exactInputSingle(\n ISwapRouter.ExactInputSingleParams({\n tokenIn: token1,\n tokenOut: token0,\n fee: feeLevel,\n recipient: address(this),\n deadline: type(uint256).max,\n amountIn: swapAmount,\n amountOutMinimum: 0,\n sqrtPriceLimitX96: 0\n })\n ) {} catch {}\n IERC20(token1).safeApprove(SWAPROUTER, 0);\n }\n\n balance0 = IERC20(token0).balanceOf(address(this));\n balance1 = IERC20(token1).balanceOf(address(this));\n _addLiquidity(\n CellarAddParams({\n amount0Desired: balance0,\n amount1Desired: balance1,\n amount0Min: 0,\n amount1Min: 0,\n recipient: address(this),\n deadline: type(uint256).max\n })\n );\n }\n\n function rebalance(CellarTickInfo[] memory _cellarTickInfo) external notLocked(msg.sender) {\n require(msg.sender == _owner, \"R21\");//\"Not owner\"\n CellarRemoveParams memory removeParams =\n CellarRemoveParams({\n tokenAmount: _totalSupply,\n amount0Min: 0,\n amount1Min: 0,\n recipient: address(this),\n deadline: type(uint256).max\n });\n _removeLiquidity(removeParams);\n CellarTickInfo[] memory _oldCellarTickInfo = cellarTickInfo;\n for (uint256 i = 0; i < _oldCellarTickInfo.length; i++) {\n INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER).burn(\n _oldCellarTickInfo[i].tokenId\n );\n }\n delete cellarTickInfo;\n for (uint256 i = 0; i < _cellarTickInfo.length; i++) {\n require(_cellarTickInfo[i].tickUpper > _cellarTickInfo[i].tickLower, \"R12\");\n if (i > 0) {\n require(_cellarTickInfo[i].tickUpper <= _cellarTickInfo[i - 1].tickLower, \"R12\");\n }\n require(_cellarTickInfo[i].weight > 0, \"R10\");\n require(_cellarTickInfo[i].tokenId == 0, \"R11\");\n cellarTickInfo.push(_cellarTickInfo[i]);\n }\n\n uint256 balance0 = IERC20(token0).balanceOf(address(this));\n uint256 balance1 = IERC20(token1).balanceOf(address(this));\n\n (uint256 inAmount0, uint256 inAmount1, , ) =\n _addLiquidity(\n CellarAddParams({\n amount0Desired: balance0,\n amount1Desired: balance1,\n amount0Min: 0,\n amount1Min: 0,\n recipient: address(this),\n deadline: type(uint256).max\n })\n );\n\n balance0 -= inAmount0;\n balance1 -= inAmount1;\n (uint160 sqrtPriceX96, , , , , , ) =\n IUniswapV3Pool(\n IUniswapV3Factory(UNISWAPV3FACTORY).getPool(\n token0,\n token1,\n feeLevel\n )\n )\n .slot0();\n if (balance0 * inAmount1 > balance1 * inAmount0) {\n uint256 swapAmount = (balance0 * inAmount1 - balance1 * inAmount0)\n /\n (FullMath.mulDiv(\n FullMath.mulDiv(\n inAmount0,\n sqrtPriceX96,\n FixedPoint96.Q96),\n sqrtPriceX96,\n FixedPoint96.Q96)\n + inAmount1);\n IERC20(token0).safeApprove(SWAPROUTER, swapAmount);\n try ISwapRouter(SWAPROUTER).exactInputSingle(\n ISwapRouter.ExactInputSingleParams({\n tokenIn: token0,\n tokenOut: token1,\n fee: feeLevel,\n recipient: address(this),\n deadline: type(uint256).max,\n amountIn: swapAmount,\n amountOutMinimum: 0,\n sqrtPriceLimitX96: 0\n })\n ) {} catch {}\n IERC20(token0).safeApprove(SWAPROUTER, 0);\n }\n if (balance0 * inAmount1 < balance1 * inAmount0) {\n uint256 swapAmount = (balance1 * inAmount0 - balance0 * inAmount1)\n /\n (FullMath.mulDiv(\n FullMath.mulDiv(\n inAmount1,\n FixedPoint96.Q96,\n sqrtPriceX96),\n FixedPoint96.Q96,\n sqrtPriceX96)\n + inAmount0);\n IERC20(token1).safeApprove(SWAPROUTER, swapAmount);\n try ISwapRouter(SWAPROUTER).exactInputSingle(\n ISwapRouter.ExactInputSingleParams({\n tokenIn: token1,\n tokenOut: token0,\n fee: feeLevel,\n recipient: address(this),\n deadline: type(uint256).max,\n amountIn: swapAmount,\n amountOutMinimum: 0,\n sqrtPriceLimitX96: 0\n })\n ) {} catch {}\n IERC20(token1).safeApprove(SWAPROUTER, 0);\n }\n\n balance0 = IERC20(token0).balanceOf(address(this));\n balance1 = IERC20(token1).balanceOf(address(this));\n _addLiquidity(\n CellarAddParams({\n amount0Desired: balance0,\n amount1Desired: balance1,\n amount0Min: 0,\n amount1Min: 0,\n recipient: address(this),\n deadline: type(uint256).max\n })\n );\n }\n\n function setValidator(address _validator, bool value) external override {\n require(msg.sender == _owner, \"R21\");\n validator[_validator] = value;\n }\n\n function transferOwnership(address newOwner) external override {\n require(msg.sender == _owner, \"R21\");\n _owner = newOwner;\n }\n\n function setFee(uint16 newFee) external override {\n require(msg.sender == _owner, \"R21\");\n fee = newFee;\n }\n\n function owner() external view override returns (address) {\n return _owner;\n }\n\n function name() external view override returns (string memory) {\n return _name;\n }\n\n function symbol() external view override returns (string memory) {\n return _symbol;\n }\n\n function decimals() external pure override returns (uint8) {\n return 18;\n }\n\n function totalSupply() external view override returns (uint256) {\n return _totalSupply;\n }\n\n function balanceOf(address account)\n external\n view\n override\n returns (uint256)\n {\n return _balances[account];\n }\n\n function allowance(address owner_, address spender)\n external\n view\n override\n returns (uint256)\n {\n return _allowances[owner_][spender];\n }\n\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal {\n require(sender != address(0), \"R22\");//\"transfer from zero address\"\n require(recipient != address(0), \"R23\");//\"transfer to zero address\"\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n uint256 senderBalance = _balances[sender];\n require(senderBalance >= amount, \"R24\");//\"transfer exceeds balance\"\n _balances[sender] = senderBalance - amount;\n _balances[recipient] += amount;\n\n emit Transfer(sender, recipient, amount);\n }\n\n function _mint(address account, uint256 amount) internal {\n require(account != address(0), \"R25\");//\"mint to zero address\"\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n _balances[account] += amount;\n emit Transfer(address(0), account, amount);\n }\n\n function _burn(address account, uint256 amount) internal {\n require(account != address(0), \"R26\");//\"burn from zero address\"\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"R27\");//\"burn exceeds balance\"\n _balances[account] = accountBalance - amount;\n _totalSupply -= amount;\n\n emit Transfer(account, address(0), amount);\n }\n\n function _approve(\n address owner_,\n address spender,\n uint256 amount\n ) internal {\n require(owner_ != address(0), \"R28\");//\"approve from zero address\"\n require(spender != address(0), \"R29\");//\"approve to zero address\"\n\n _allowances[owner_][spender] = amount;\n emit Approval(owner_, spender, amount);\n }\n\n function _getWeightInfo(CellarTickInfo[] memory _cellarTickInfo)\n internal\n view\n returns (\n uint256 weightSum0,\n uint256 weightSum1,\n uint128 liquidityBefore,\n uint256[] memory weight0,\n uint256[] memory weight1\n )\n {\n weight0 = new uint256[](_cellarTickInfo.length);\n weight1 = new uint256[](_cellarTickInfo.length);\n (uint160 sqrtPriceX96, int24 currentTick, , , , , ) =\n IUniswapV3Pool(\n IUniswapV3Factory(UNISWAPV3FACTORY).getPool(\n token0,\n token1,\n feeLevel\n )\n )\n .slot0();\n UintPair memory sqrtPrice0;\n\n uint256 weight00;\n uint256 weight10;\n\n sqrtPrice0.a = TickMath.getSqrtRatioAtTick(\n _cellarTickInfo[0].tickLower\n );\n sqrtPrice0.b = TickMath.getSqrtRatioAtTick(\n _cellarTickInfo[0].tickUpper\n );\n\n weight00 = _cellarTickInfo[0].weight;\n\n weight10 = _cellarTickInfo[_cellarTickInfo.length - 1].weight;\n for (uint16 i = 0; i < _cellarTickInfo.length; i++) {\n if (_cellarTickInfo[i].tokenId > 0) {\n (, , , , , , , uint128 liquidity, , , , ) =\n INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER)\n .positions(_cellarTickInfo[i].tokenId);\n liquidityBefore += liquidity;\n }\n\n UintPair memory sqrtCurrentTickPriceX96;\n sqrtCurrentTickPriceX96.a = TickMath.getSqrtRatioAtTick(\n _cellarTickInfo[i].tickLower\n );\n sqrtCurrentTickPriceX96.b = TickMath.getSqrtRatioAtTick(\n _cellarTickInfo[i].tickUpper\n );\n\n if (currentTick <= _cellarTickInfo[i].tickLower) {\n weight0[i] =\n (FullMath.mulDiv(\n FullMath.mulDiv(\n FullMath.mulDiv(\n sqrtPrice0.a,\n sqrtPrice0.b,\n sqrtPrice0.b - sqrtPrice0.a\n ),\n sqrtCurrentTickPriceX96.b -\n sqrtCurrentTickPriceX96.a,\n sqrtCurrentTickPriceX96.b\n ),\n FixedPoint96.Q96,\n sqrtCurrentTickPriceX96.a\n ) * _cellarTickInfo[i].weight) /\n weight00;\n weightSum0 += weight0[i];\n } else if (currentTick >= _cellarTickInfo[i].tickUpper) {\n weight1[i] =\n (FullMath.mulDiv(\n sqrtCurrentTickPriceX96.b - sqrtCurrentTickPriceX96.a,\n FixedPoint96.Q96,\n sqrtPrice0.b - sqrtPrice0.a\n ) * _cellarTickInfo[i].weight) /\n weight10;\n weightSum1 += weight1[i];\n } else {\n weight0[i] =\n (FullMath.mulDiv(\n FullMath.mulDiv(\n FullMath.mulDiv(\n sqrtPrice0.a,\n sqrtPrice0.b,\n sqrtPrice0.b - sqrtPrice0.a\n ),\n sqrtCurrentTickPriceX96.b - sqrtPriceX96,\n sqrtCurrentTickPriceX96.b\n ),\n FixedPoint96.Q96,\n sqrtPriceX96\n ) * _cellarTickInfo[i].weight) /\n weight00;\n\n weight1[i] =\n (FullMath.mulDiv(\n sqrtPriceX96 - sqrtCurrentTickPriceX96.a,\n FixedPoint96.Q96,\n sqrtPrice0.b - sqrtPrice0.a\n ) * _cellarTickInfo[i].weight) /\n weight10;\n weightSum0 += weight0[i];\n weightSum1 += weight1[i];\n }\n }\n }\n\n function _modifyWeightInfo(\n CellarTickInfo[] memory _cellarTickInfo,\n uint256 amount0Desired,\n uint256 amount1Desired,\n uint256 weightSum0,\n uint256 weightSum1,\n uint256[] memory weight0,\n uint256[] memory weight1\n ) internal view returns (uint256 newWeightSum0, uint256 newWeightSum1) {\n if (_cellarTickInfo.length == 1) {\n return (weightSum0, weightSum1);\n }\n\n UintPair memory liquidity;\n (uint160 sqrtPriceX96, , , , , , ) =\n IUniswapV3Pool(\n IUniswapV3Factory(UNISWAPV3FACTORY).getPool(\n token0,\n token1,\n feeLevel\n )\n )\n .slot0();\n liquidity.a = LiquidityAmounts.getLiquidityForAmounts(\n sqrtPriceX96,\n TickMath.getSqrtRatioAtTick(_cellarTickInfo[0].tickLower),\n TickMath.getSqrtRatioAtTick(_cellarTickInfo[0].tickUpper),\n FullMath.mulDiv(amount0Desired, weight0[0], weightSum0),\n FullMath.mulDiv(amount1Desired, weight1[0], weightSum1)\n );\n uint256 tickLength = _cellarTickInfo.length - 1;\n liquidity.b = LiquidityAmounts.getLiquidityForAmounts(\n sqrtPriceX96,\n TickMath.getSqrtRatioAtTick(_cellarTickInfo[tickLength].tickLower),\n TickMath.getSqrtRatioAtTick(_cellarTickInfo[tickLength].tickUpper),\n FullMath.mulDiv(amount0Desired, weight0[tickLength], weightSum0),\n FullMath.mulDiv(amount1Desired, weight1[tickLength], weightSum1)\n );\n\n if (\n liquidity.a * _cellarTickInfo[tickLength].weight >\n liquidity.b * _cellarTickInfo[0].weight\n ) {\n if (liquidity.b * _cellarTickInfo[0].weight > 0) {\n newWeightSum0 = FullMath.mulDiv(\n weightSum0,\n liquidity.a * _cellarTickInfo[tickLength].weight,\n liquidity.b * _cellarTickInfo[0].weight\n );\n }\n else {\n newWeightSum0 = 0;\n }\n newWeightSum1 = weightSum1;\n } else {\n newWeightSum0 = weightSum0;\n if (liquidity.a * _cellarTickInfo[tickLength].weight > 0) {\n newWeightSum1 = FullMath.mulDiv(\n weightSum1,\n liquidity.b * _cellarTickInfo[0].weight,\n liquidity.a * _cellarTickInfo[tickLength].weight\n );\n }\n else {\n newWeightSum1 = 0;\n }\n }\n }\n\n function _addLiquidity(CellarAddParams memory cellarParams)\n internal\n returns (\n uint256 inAmount0,\n uint256 inAmount1,\n uint128 liquidityBefore,\n uint128 liquiditySum\n )\n {\n CellarTickInfo[] memory _cellarTickInfo = cellarTickInfo;\n IERC20(token0).safeApprove(\n NONFUNGIBLEPOSITIONMANAGER,\n cellarParams.amount0Desired\n );\n IERC20(token1).safeApprove(\n NONFUNGIBLEPOSITIONMANAGER,\n cellarParams.amount1Desired\n );\n\n uint256 weightSum0;\n uint256 weightSum1;\n uint256[] memory weight0 = new uint256[](_cellarTickInfo.length);\n uint256[] memory weight1 = new uint256[](_cellarTickInfo.length);\n\n (\n weightSum0,\n weightSum1,\n liquidityBefore,\n weight0,\n weight1\n ) = _getWeightInfo(_cellarTickInfo);\n if (weightSum0 > 0 && weightSum1 > 0) {\n (weightSum0, weightSum1) = _modifyWeightInfo(\n _cellarTickInfo,\n cellarParams.amount0Desired,\n cellarParams.amount1Desired,\n weightSum0,\n weightSum1,\n weight0,\n weight1\n );\n }\n\n for (uint16 i = 0; i < _cellarTickInfo.length; i++) {\n INonfungiblePositionManager.MintParams memory mintParams =\n INonfungiblePositionManager.MintParams({\n token0: token0,\n token1: token1,\n fee: feeLevel,\n tickLower: _cellarTickInfo[i].tickLower,\n tickUpper: _cellarTickInfo[i].tickUpper,\n amount0Desired: 0,\n amount1Desired: 0,\n amount0Min: 0,\n amount1Min: 0,\n recipient: address(this),\n deadline: cellarParams.deadline\n });\n\n INonfungiblePositionManager.IncreaseLiquidityParams\n memory increaseLiquidityParams\n =\n INonfungiblePositionManager.IncreaseLiquidityParams({\n tokenId: _cellarTickInfo[i].tokenId,\n amount0Desired: 0,\n amount1Desired: 0,\n amount0Min: 0,\n amount1Min: 0,\n deadline: cellarParams.deadline\n });\n if (weightSum0 > 0) {\n mintParams.amount0Desired = FullMath.mulDiv(\n cellarParams.amount0Desired,\n weight0[i],\n weightSum0\n );\n increaseLiquidityParams.amount0Desired = mintParams\n .amount0Desired;\n mintParams.amount0Min = FullMath.mulDiv(\n cellarParams.amount0Min,\n weight0[i],\n weightSum0\n );\n increaseLiquidityParams.amount0Min = mintParams.amount0Min;\n }\n if (weightSum1 > 0) {\n mintParams.amount1Desired = FullMath.mulDiv(\n cellarParams.amount1Desired,\n weight1[i],\n weightSum1\n );\n increaseLiquidityParams.amount1Desired = mintParams\n .amount1Desired;\n mintParams.amount1Min = FullMath.mulDiv(\n cellarParams.amount1Min,\n weight1[i],\n weightSum1\n );\n increaseLiquidityParams.amount1Min = mintParams.amount1Min;\n }\n if (\n mintParams.amount0Desired > 0 || mintParams.amount1Desired > 0\n ) {\n MintResult memory mintResult;\n if (_cellarTickInfo[i].tokenId == 0) {\n\n try INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER)\n .mint(mintParams) returns (uint256 r1, uint128 r2, uint256 r3, uint256 r4) {\n mintResult.tokenId = r1;\n mintResult.liquidity = r2;\n mintResult.amount0 = r3;\n mintResult.amount1 = r4;\n } catch {}\n\n cellarTickInfo[i].tokenId = uint184(mintResult.tokenId);\n\n inAmount0 += mintResult.amount0;\n inAmount1 += mintResult.amount1;\n liquiditySum += mintResult.liquidity;\n } else {\n try INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER)\n .increaseLiquidity(increaseLiquidityParams) returns (uint128 r1, uint256 r2, uint256 r3) {\n mintResult.liquidity = r1;\n mintResult.amount0 = r2;\n mintResult.amount1 = r3;\n } catch {}\n inAmount0 += mintResult.amount0;\n inAmount1 += mintResult.amount1;\n liquiditySum += mintResult.liquidity;\n }\n }\n }\n IERC20(token0).safeApprove(NONFUNGIBLEPOSITIONMANAGER, 0);\n IERC20(token1).safeApprove(NONFUNGIBLEPOSITIONMANAGER, 0);\n }\n\n function _removeLiquidity(CellarRemoveParams memory cellarParams)\n internal\n returns (\n uint256 outAmount0,\n uint256 outAmount1,\n uint128 liquiditySum\n )\n {\n CellarTickInfo[] memory _cellarTickInfo = cellarTickInfo;\n uint256 fee0;\n uint256 fee1;\n for (uint16 i = 0; i < _cellarTickInfo.length; i++) {\n (, , , , , , , uint128 liquidity, , , , ) =\n INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER)\n .positions(_cellarTickInfo[i].tokenId);\n uint128 outLiquidity =\n uint128(\n FullMath.mulDiv(\n liquidity,\n cellarParams.tokenAmount,\n _totalSupply\n )\n );\n\n INonfungiblePositionManager.DecreaseLiquidityParams\n memory decreaseLiquidityParams\n =\n INonfungiblePositionManager.DecreaseLiquidityParams({\n tokenId: _cellarTickInfo[i].tokenId,\n liquidity: outLiquidity,\n amount0Min: 0,\n amount1Min: 0,\n deadline: cellarParams.deadline\n });\n (uint256 amount0, uint256 amount1) =\n INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER)\n .decreaseLiquidity(decreaseLiquidityParams);\n (uint256 collectAmount0, uint256 collectAmount1) =\n INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER).collect(\n INonfungiblePositionManager.CollectParams({\n tokenId: _cellarTickInfo[i].tokenId,\n recipient: address(this),\n amount0Max: type(uint128).max,\n amount1Max: type(uint128).max\n })\n );\n fee0 += collectAmount0 - amount0;\n fee1 += collectAmount1 - amount1;\n outAmount0 += amount0;\n outAmount1 += amount1;\n liquiditySum += outLiquidity;\n }\n fee0 = (fee0 * fee) / FEEDOMINATOR;\n fee1 = (fee1 * fee) / FEEDOMINATOR;\n if (fee0 > 0) {\n IERC20(token0).safeTransfer(_owner, fee0);\n }\n if (fee1 > 0) {\n IERC20(token1).safeTransfer(_owner, fee1);\n }\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {}\n\n receive() external payable {}\n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "contracts": { + "contracts/CellarPoolShare.sol": { + "Address": { + "abi": [], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220909b44d85c67f2faa04e4ffff4978b5367a39eb2c1521444157c2f5ff7d5362e64736f6c63430007060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 SWAP12 DIFFICULTY 0xD8 0x5C PUSH8 0xF2FAA04E4FFFF497 DUP12 MSTORE8 PUSH8 0xA39EB2C152144415 PUSH29 0x2F5FF7D5362E64736F6C63430007060033000000000000000000000000 ", + "sourceMap": "3853:2062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220909b44d85c67f2faa04e4ffff4978b5367a39eb2c1521444157c2f5ff7d5362e64736f6c63430007060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 SWAP12 DIFFICULTY 0xD8 0x5C PUSH8 0xF2FAA04E4FFFF497 DUP12 MSTORE8 PUSH8 0xA39EB2C152144415 PUSH29 0x2F5FF7D5362E64736F6C63430007060033000000000000000000000000 ", + "sourceMap": "3853:2062:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + }, + "BlockLock": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastLockedBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060cd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639f3e8b3414602d575b600080fd5b603c60383660046062565b6050565b60405160479190608e565b60405180910390f35b60006020819052908152604090205481565b6000602082840312156072578081fd5b81356001600160a01b03811681146087578182fd5b9392505050565b9081526020019056fea2646970667358221220de52df3833b08fee05f92292987565724b21deec30670295f2da15820e925f1f64736f6c63430007060033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCD DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F3E8B34 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0x62 JUMP JUMPDEST PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x47 SWAP2 SWAP1 PUSH1 0x8E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x72 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH1 0x87 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE MSTORE 0xDF CODESIZE CALLER 0xB0 DUP16 0xEE SDIV 0xF9 0x22 SWAP3 SWAP9 PUSH22 0x65724B21DEEC30670295F2DA15820E925F1F64736F6C PUSH4 0x43000706 STOP CALLER ", + "sourceMap": "16480:507:0:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:504:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "84:236:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "130:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "139:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "147:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "132:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "132:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "132:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "105:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "114:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "101:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "101:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "126:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "97:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "97:32:1" + }, + "nodeType": "YulIf", + "src": "94:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "165:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "191:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "178:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "178:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "169:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "264:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "273:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "281:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "266:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "266:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "266:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "223:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "234:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "249:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "254:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "245:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "245:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "258:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "241:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "241:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "230:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "230:31:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "220:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "220:42:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "213:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "213:50:1" + }, + "nodeType": "YulIf", + "src": "210:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "299:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "309:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "299:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "50:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "61:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "73:6:1", + "type": "" + } + ], + "src": "14:306:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "426:76:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "436:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "448:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "459:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "444:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "444:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "436:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "478:9:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "489:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "471:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "471:25:1" + }, + "nodeType": "YulExpressionStatement", + "src": "471:25:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "395:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "406:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "417:4:1", + "type": "" + } + ], + "src": "325:177:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(value0, value0) }\n value0 := value\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80639f3e8b3414602d575b600080fd5b603c60383660046062565b6050565b60405160479190608e565b60405180910390f35b60006020819052908152604090205481565b6000602082840312156072578081fd5b81356001600160a01b03811681146087578182fd5b9392505050565b9081526020019056fea2646970667358221220de52df3833b08fee05f92292987565724b21deec30670295f2da15820e925f1f64736f6c63430007060033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9F3E8B34 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3C PUSH1 0x38 CALLDATASIZE PUSH1 0x4 PUSH1 0x62 JUMP JUMPDEST PUSH1 0x50 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x47 SWAP2 SWAP1 PUSH1 0x8E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x72 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH1 0x87 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE MSTORE 0xDF CODESIZE CALLER 0xB0 DUP16 0xEE SDIV 0xF9 0x22 SWAP3 SWAP9 PUSH22 0x65724B21DEEC30670295F2DA15820E925F1F64736F6C PUSH4 0x43000706 STOP CALLER ", + "sourceMap": "16480:507:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16663:50;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;14:306:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;178:23;;-1:-1:-1;;;;;230:31:1;;220:42;;210:2;;281:6;273;266:22;210:2;309:5;84:236;-1:-1:-1;;;84:236:1:o;325:177::-;471:25;;;459:2;444:18;;426:76::o" + }, + "methodIdentifiers": { + "lastLockedBlock(address)": "9f3e8b34" + } + } + }, + "CellarPoolShare": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "address", + "name": "_token0", + "type": "address" + }, + { + "internalType": "address", + "name": "_token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "_feeLevel", + "type": "uint24" + }, + { + "components": [ + { + "internalType": "uint184", + "name": "tokenId", + "type": "uint184" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "uint24", + "name": "weight", + "type": "uint24" + } + ], + "internalType": "struct ICellarPoolShare.CellarTickInfo[]", + "name": "_cellarTickInfo", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "AddedLiquidity", + "type": "event" + }, + { + "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": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "RemovedLiquidity", + "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": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityEthForUniV3", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityForUniV3", + "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": "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": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "cellarTickInfo", + "outputs": [ + { + "internalType": "uint184", + "name": "tokenId", + "type": "uint184" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "uint24", + "name": "weight", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "fee", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeLevel", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastLockedBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint184", + "name": "tokenId", + "type": "uint184" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "uint24", + "name": "weight", + "type": "uint24" + } + ], + "internalType": "struct ICellarPoolShare.CellarTickInfo[]", + "name": "_cellarTickInfo", + "type": "tuple[]" + } + ], + "name": "rebalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityEthFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newFee", + "type": "uint16" + } + ], + "name": "setFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_validator", + "type": "address" + }, + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "validator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:5174:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "76:117:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "86:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "101:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "95:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "95:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "86:5:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "171:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "180:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "183:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "173:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "173:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "173:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "130:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "141:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "156:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "161:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "152:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "152:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "165:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "148:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "148:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "137:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "137:31:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "127:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "127:42:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "120:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "120:50:1" + }, + "nodeType": "YulIf", + "src": "117:2:1" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "55:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "66:5:1", + "type": "" + } + ], + "src": "14:179:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "258:106:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "268:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "283:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "277:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "277:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "268:5:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "342:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "351:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "354:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "344:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "344:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "344:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "312:5:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "330:1:1", + "type": "", + "value": "2" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "333:5:1" + } + ], + "functionName": { + "name": "signextend", + "nodeType": "YulIdentifier", + "src": "319:10:1" + }, + "nodeType": "YulFunctionCall", + "src": "319:20:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "309:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "309:31:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "302:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "302:39:1" + }, + "nodeType": "YulIf", + "src": "299:2:1" + } + ] + }, + "name": "abi_decode_t_int24_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "237:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "248:5:1", + "type": "" + } + ], + "src": "198:166:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "435:645:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "484:24:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "493:5:1" + }, + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "500:5:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "486:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "486:20:1" + }, + "nodeType": "YulExpressionStatement", + "src": "486:20:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "463:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "471:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "459:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "459:17:1" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "478:3:1" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "455:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "455:27:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "448:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "448:35:1" + }, + "nodeType": "YulIf", + "src": "445:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "517:23:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "533:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "527:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "527:13:1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "521:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "579:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "581:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "581:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "581:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "555:2:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "567:2:1", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "571:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "563:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "563:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "575:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "559:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "559:18:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "552:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "552:26:1" + }, + "nodeType": "YulIf", + "src": "549:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "601:14:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "611:4:1", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "605:2:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "624:67:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "666:2:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "670:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "662:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "662:13:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "681:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "677:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "677:7:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "658:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "658:27:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "687:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "654:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "654:36:1" + } + ], + "functionName": { + "name": "allocateMemory", + "nodeType": "YulIdentifier", + "src": "639:14:1" + }, + "nodeType": "YulFunctionCall", + "src": "639:52:1" + }, + "variables": [ + { + "name": "array_1", + "nodeType": "YulTypedName", + "src": "628:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "707:7:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "716:2:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "700:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "700:19:1" + }, + "nodeType": "YulExpressionStatement", + "src": "700:19:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "765:24:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "774:5:1" + }, + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "781:5:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "767:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "767:20:1" + }, + "nodeType": "YulExpressionStatement", + "src": "767:20:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "742:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "750:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "738:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "738:15:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "755:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "734:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "734:24:1" + }, + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "760:3:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "731:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "731:33:1" + }, + "nodeType": "YulIf", + "src": "728:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "798:14:1", + "value": { + "name": "array", + "nodeType": "YulIdentifier", + "src": "807:5:1" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "802:1:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "867:88:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "896:7:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "905:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "892:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "892:15:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "909:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "888:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "888:24:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "928:6:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "936:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "924:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "924:14:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "940:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "920:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "920:23:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "914:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "914:30:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "881:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "881:64:1" + }, + "nodeType": "YulExpressionStatement", + "src": "881:64:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "832:1:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "835:2:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "829:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "829:9:1" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "839:19:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "841:15:1", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "850:1:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "853:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "846:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "846:10:1" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "841:1:1" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "825:3:1", + "statements": [] + }, + "src": "821:134:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "985:64:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "1014:7:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1023:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1010:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1010:16:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "1028:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1006:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1006:25:1" + }, + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "1033:5:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "999:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "999:40:1" + }, + "nodeType": "YulExpressionStatement", + "src": "999:40:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "970:1:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "973:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "967:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "967:9:1" + }, + "nodeType": "YulIf", + "src": "964:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "1058:16:1", + "value": { + "name": "array_1", + "nodeType": "YulIdentifier", + "src": "1067:7:1" + }, + "variableNames": [ + { + "name": "array", + "nodeType": "YulIdentifier", + "src": "1058:5:1" + } + ] + } + ] + }, + "name": "abi_decode_t_string_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "409:6:1", + "type": "" + }, + { + "name": "end", + "nodeType": "YulTypedName", + "src": "417:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nodeType": "YulTypedName", + "src": "425:5:1", + "type": "" + } + ], + "src": "369:711:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1146:106:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1156:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1171:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1165:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "1165:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1156:5:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1230:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1239:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1242:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1232:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1232:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1232:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1200:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1211:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1218:8:1", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "1207:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1207:20:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "1197:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "1197:31:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "1190:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1190:39:1" + }, + "nodeType": "YulIf", + "src": "1187:2:1" + } + ] + }, + "name": "abi_decode_t_uint24_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1125:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1136:5:1", + "type": "" + } + ], + "src": "1085:167:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1499:2103:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1546:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1555:6:1" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1563:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1548:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1548:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1548:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1520:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1529:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1516:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1516:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1541:3:1", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1512:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1512:33:1" + }, + "nodeType": "YulIf", + "src": "1509:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1581:30:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1601:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1595:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "1595:16:1" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "1585:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1620:28:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1638:2:1", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1642:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "1634:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1634:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1646:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1630:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1630:18:1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "1624:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1675:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1684:6:1" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1692:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1677:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1677:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1677:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1663:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1671:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1660:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "1660:14:1" + }, + "nodeType": "YulIf", + "src": "1657:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "1710:73:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1755:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "1766:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1751:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1751:22:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1775:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1720:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "1720:63:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1710:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1792:41:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1818:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1829:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1814:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1814:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1808:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "1808:25:1" + }, + "variables": [ + { + "name": "offset_1", + "nodeType": "YulTypedName", + "src": "1796:8:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1862:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1871:6:1" + }, + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "1879:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1864:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1864:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1864:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1848:8:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "1858:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "1845:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "1845:16:1" + }, + "nodeType": "YulIf", + "src": "1842:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "1897:75:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1942:9:1" + }, + { + "name": "offset_1", + "nodeType": "YulIdentifier", + "src": "1953:8:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1938:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1938:24:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1964:7:1" + } + ], + "functionName": { + "name": "abi_decode_t_string_fromMemory", + "nodeType": "YulIdentifier", + "src": "1907:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "1907:65:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1897:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "1981:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2027:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2038:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2023:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2023:18:1" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "1991:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "1991:51:1" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "1981:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2051:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2097:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2108:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2093:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2093:18:1" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "2061:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "2061:51:1" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "2051:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2121:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2166:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2177:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2162:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2162:19:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint24_fromMemory", + "nodeType": "YulIdentifier", + "src": "2131:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "2131:51:1" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "2121:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2191:42:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2217:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2228:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2213:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2213:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2207:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "2207:26:1" + }, + "variables": [ + { + "name": "offset_2", + "nodeType": "YulTypedName", + "src": "2195:8:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2262:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2271:6:1" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2279:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2264:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2264:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2264:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "2248:8:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2258:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2245:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2245:16:1" + }, + "nodeType": "YulIf", + "src": "2242:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2297:34:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2311:9:1" + }, + { + "name": "offset_2", + "nodeType": "YulIdentifier", + "src": "2322:8:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2307:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2307:24:1" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "2301:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2379:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2388:6:1" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2396:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2381:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2381:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2381:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2358:2:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2362:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2354:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2354:13:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2369:7:1" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2350:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2350:27:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "2343:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2343:35:1" + }, + "nodeType": "YulIf", + "src": "2340:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2414:19:1", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2430:2:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2424:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "2424:9:1" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "2418:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2456:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "2458:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "2458:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2458:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "2448:2:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2452:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2445:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2445:10:1" + }, + "nodeType": "YulIf", + "src": "2442:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2478:47:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "2512:2:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2516:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2508:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2508:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2521:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2504:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2504:20:1" + } + ], + "functionName": { + "name": "allocateMemory", + "nodeType": "YulIdentifier", + "src": "2489:14:1" + }, + "nodeType": "YulFunctionCall", + "src": "2489:36:1" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "2482:3:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2534:16:1", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2547:3:1" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "2538:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2566:3:1" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "2571:2:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "2559:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2559:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2559:15:1" + }, + { + "nodeType": "YulAssignment", + "src": "2583:19:1", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2594:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2599:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2590:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2590:12:1" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "2583:3:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2611:22:1", + "value": { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2626:2:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2630:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2622:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2622:11:1" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "2615:3:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2689:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2698:6:1" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2706:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2691:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2691:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2691:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "2656:2:1" + }, + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "2664:2:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2668:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "2660:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2660:12:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2652:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2652:21:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2675:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2648:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2648:30:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2680:7:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2645:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2645:43:1" + }, + "nodeType": "YulIf", + "src": "2642:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2724:15:1", + "value": { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2733:6:1" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "2728:1:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2793:779:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2838:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2847:6:1" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "2855:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2840:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2840:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2840:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2818:7:1" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "2827:3:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2814:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2814:17:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2833:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2810:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2810:27:1" + }, + "nodeType": "YulIf", + "src": "2807:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2877:23:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2897:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "2891:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "2891:9:1" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "2881:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2913:34:1", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "2935:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2943:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2931:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2931:16:1" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "2917:10:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3010:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "3012:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "3012:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3012:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2969:10:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "2981:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "2966:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2966:18:1" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "2989:10:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3001:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2986:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2986:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "2963:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2963:46:1" + }, + "nodeType": "YulIf", + "src": "2960:2:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3043:2:1", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "3047:10:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3036:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3036:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3036:22:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3071:23:1", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3090:3:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "3084:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "3084:10:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "3075:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3161:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "3170:6:1" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "3178:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3163:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3163:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3163:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3120:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3131:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3146:3:1", + "type": "", + "value": "184" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3151:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "3142:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3142:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3155:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3138:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3138:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "3127:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3127:31:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "3117:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "3117:42:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3110:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3110:50:1" + }, + "nodeType": "YulIf", + "src": "3107:2:1" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3207:6:1" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3215:5:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3200:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3200:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3200:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3245:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3253:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3241:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3241:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3292:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3297:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3288:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3288:12:1" + } + ], + "functionName": { + "name": "abi_decode_t_int24_fromMemory", + "nodeType": "YulIdentifier", + "src": "3258:29:1" + }, + "nodeType": "YulFunctionCall", + "src": "3258:43:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3234:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3234:68:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3234:68:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3326:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3334:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3322:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3322:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3373:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3378:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3369:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3369:12:1" + } + ], + "functionName": { + "name": "abi_decode_t_int24_fromMemory", + "nodeType": "YulIdentifier", + "src": "3339:29:1" + }, + "nodeType": "YulFunctionCall", + "src": "3339:43:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3315:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3315:68:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3315:68:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3407:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3415:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3403:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3403:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3455:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3460:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3451:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3451:12:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint24_fromMemory", + "nodeType": "YulIdentifier", + "src": "3420:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "3420:44:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3396:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3396:69:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3396:69:1" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3485:3:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "3490:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3478:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3478:19:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3478:19:1" + }, + { + "nodeType": "YulAssignment", + "src": "3510:19:1", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3521:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3526:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3517:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3517:12:1" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3510:3:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3542:20:1", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3553:3:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3558:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3549:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3549:13:1" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3542:3:1" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2759:1:1" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "2762:2:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "2756:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "2756:9:1" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "2766:18:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "2768:14:1", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2777:1:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2780:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2773:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2773:9:1" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "2768:1:1" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "2752:3:1", + "statements": [] + }, + "src": "2748:824:1" + }, + { + "nodeType": "YulAssignment", + "src": "3581:15:1", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "3591:5:1" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "3581:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint24t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1425:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1436:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1448:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1456:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1464:6:1", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "1472:6:1", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "1480:6:1", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "1488:6:1", + "type": "" + } + ], + "src": "1257:2345:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3781:151:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3798:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3809:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3791:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3791:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3791:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3832:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3843:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3828:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3828:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3848:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3821:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3821:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3821:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3870:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3881:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3866:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3866:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "3886:4:1", + "type": "", + "value": "R9" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3859:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3859:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3859:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "3900:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3912:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3923:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3908:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3908:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "3900:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_6ee52e457a9d276dcc23a651c6a429742400a539e263fca57d62b7e6adee7a4f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3758:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "3772:4:1", + "type": "" + } + ], + "src": "3607:325:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4111:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4128:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4139:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4121:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4121:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4121:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4162:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4173:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4158:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4158:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4178:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4151:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4151:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4151:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4200:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4211:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4196:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4196:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "4216:5:1", + "type": "", + "value": "R11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4189:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4189:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4189:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "4231:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4243:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4254:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4239:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4239:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4231:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4088:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4102:4:1", + "type": "" + } + ], + "src": "3937:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4442:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4459:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4470:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4452:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4452:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4452:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4493:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4504:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4489:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4489:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4509:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4482:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4482:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4482:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4531:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4542:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4527:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4527:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "4547:5:1", + "type": "", + "value": "R10" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4520:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4520:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4520:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "4562:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4574:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4585:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4570:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4570:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4562:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4419:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4433:4:1", + "type": "" + } + ], + "src": "4268:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4773:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4790:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4801:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4783:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4783:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4783:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4824:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4835:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4820:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4820:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4840:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4813:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4813:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4813:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4862:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4873:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4858:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4858:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "4878:5:1", + "type": "", + "value": "R12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4851:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4851:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4851:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "4893:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4905:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4916:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4901:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4901:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "4893:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4750:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "4764:4:1", + "type": "" + } + ], + "src": "4599:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4974:198:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "4984:19:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5000:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4994:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "4994:9:1" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4984:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5012:35:1", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5034:6:1" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5042:4:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5030:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5030:17:1" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "5016:10:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5122:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "5124:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "5124:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5124:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "5065:10:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5085:2:1", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5089:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "5081:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5081:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5093:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5077:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5077:18:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5062:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5062:34:1" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "5101:10:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5113:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "5098:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5098:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "5059:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5059:62:1" + }, + "nodeType": "YulIf", + "src": "5056:2:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5151:2:1", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "5155:10:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5144:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5144:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5144:22:1" + } + ] + }, + "name": "allocateMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "4954:4:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "4963:6:1", + "type": "" + } + ], + "src": "4930:242:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_t_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_t_int24_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n }\n function abi_decode_t_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n let _1 := mload(offset)\n if gt(_1, sub(shl(64, 1), 1)) { invalid() }\n let _2 := 0x20\n let array_1 := allocateMemory(add(and(add(_1, 0x1f), not(31)), _2))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), _2), end) { revert(array, array) }\n let i := array\n for { } lt(i, _1) { i := add(i, _2) }\n {\n mstore(add(add(array_1, i), _2), mload(add(add(offset, i), _2)))\n }\n if gt(i, _1)\n {\n mstore(add(add(array_1, _1), _2), array)\n }\n array := array_1\n }\n function abi_decode_t_uint24_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint24t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 192) { revert(value4, value4) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(value4, value4) }\n value0 := abi_decode_t_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(value4, value4) }\n value1 := abi_decode_t_string_fromMemory(add(headStart, offset_1), dataEnd)\n value2 := abi_decode_t_address_fromMemory(add(headStart, 64))\n value3 := abi_decode_t_address_fromMemory(add(headStart, 96))\n value4 := abi_decode_t_uint24_fromMemory(add(headStart, 128))\n let offset_2 := mload(add(headStart, 160))\n if gt(offset_2, _1) { revert(value5, value5) }\n let _2 := add(headStart, offset_2)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value5, value5) }\n let _3 := mload(_2)\n if gt(_3, _1) { invalid() }\n let dst := allocateMemory(add(mul(_3, 32), 32))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, 32)\n let src := add(_2, 32)\n if gt(add(add(_2, mul(_3, 128)), 32), dataEnd) { revert(value5, value5) }\n let i := value5\n for { } lt(i, _3) { i := add(i, 1) }\n {\n if slt(sub(dataEnd, src), 128) { revert(value5, value5) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 128)\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n let value := mload(src)\n if iszero(eq(value, and(value, sub(shl(184, 1), 1)))) { revert(value5, value5) }\n mstore(memPtr, value)\n mstore(add(memPtr, 32), abi_decode_t_int24_fromMemory(add(src, 32)))\n mstore(add(memPtr, 64), abi_decode_t_int24_fromMemory(add(src, 64)))\n mstore(add(memPtr, 96), abi_decode_t_uint24_fromMemory(add(src, 96)))\n mstore(dst, memPtr)\n dst := add(dst, 32)\n src := add(src, 128)\n }\n value5 := dst_1\n }\n function abi_encode_tuple_t_stringliteral_6ee52e457a9d276dcc23a651c6a429742400a539e263fca57d62b7e6adee7a4f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 2)\n mstore(add(headStart, 64), \"R9\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R11\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R10\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R12\")\n tail := add(headStart, 96)\n }\n function allocateMemory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60e06040526009805462ffff0019166203e8001790553480156200002257600080fd5b50604051620066fc380380620066fc83398101604081905262000045916200047d565b85516200005a90600690602089019062000304565b5084516200007090600790602088019062000304565b50826001600160a01b0316846001600160a01b031610620000ae5760405162461bcd60e51b8152600401620000a5906200062c565b60405180910390fd5b6001600160601b0319606085811b821660805284901b1660a0526001600160e81b031960e883901b1660c05260005b8151811015620002e4576000828281518110620000f657fe5b60200260200101516060015162ffffff1611620001275760405162461bcd60e51b8152600401620000a59062000665565b8181815181106200013457fe5b6020026020010151600001516001600160b81b03166000146200016b5760405162461bcd60e51b8152600401620000a59062000648565b8015620001ce578160018203815181106200018257fe5b60200260200101516040015160020b8282815181106200019e57fe5b60200260200101516020015160020b1315620001ce5760405162461bcd60e51b8152600401620000a59062000682565b6008604051806080016040528060006001600160b81b03168152602001848481518110620001f857fe5b60200260200101516020015160020b81526020018484815181106200021957fe5b60200260200101516040015160020b81526020018484815181106200023a57fe5b60209081029190910181015160609081015162ffffff90811690935284546001808201875560009687529583902085519101805493860151604087015196909301516001600160b81b03199094166001600160b81b039092169190911762ffffff60b81b1916600160b81b600293840b8616021762ffffff60d01b1916600160d01b9590920b841694909402176001600160e81b0316600160e81b919092160217905501620000dd565b5050600580546001600160a01b0319163317905550620006c39350505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200033c576000855562000387565b82601f106200035757805160ff191683800117855562000387565b8280016001018555821562000387579182015b82811115620003875782518255916020019190600101906200036a565b506200039592915062000399565b5090565b5b808211156200039557600081556001016200039a565b80516001600160a01b0381168114620003c857600080fd5b919050565b8051600281900b8114620003c857600080fd5b600082601f830112620003f1578081fd5b81516001600160401b038111156200040557fe5b60206200041b601f8301601f191682016200069f565b82815285828487010111156200042f578384fd5b835b838110156200044e57858101830151828201840152820162000431565b838111156200045f57848385840101525b5095945050505050565b805162ffffff81168114620003c857600080fd5b60008060008060008060c0878903121562000496578182fd5b86516001600160401b0380821115620004ad578384fd5b620004bb8a838b01620003e0565b97506020890151915080821115620004d1578384fd5b620004df8a838b01620003e0565b9650620004ef60408a01620003b0565b9550620004ff60608a01620003b0565b94506200050f60808a0162000469565b935060a089015191508082111562000525578283fd5b818901915089601f83011262000539578283fd5b8151818111156200054657fe5b620005566020808302016200069f565b80828252602082019150602085018d602060808602880101111562000579578687fd5b8695505b8386101562000619576080818f03121562000596578687fd5b604051608081018181108782111715620005ac57fe5b60405281516001600160b81b0381168114620005c6578889fd5b8152620005d660208301620003cd565b6020820152620005e960408301620003cd565b6040820152620005fc6060830162000469565b60608201528352600195909501946020909201916080016200057d565b5080955050505050509295509295509295565b602080825260029082015261523960f01b604082015260600190565b60208082526003908201526252313160e81b604082015260600190565b60208082526003908201526205231360ec1b604082015260600190565b60208082526003908201526229189960e91b604082015260600190565b6040518181016001600160401b0381118282101715620006bb57fe5b604052919050565b60805160601c60a05160601c60c05160e81c615e826200087a60003980610b815280610d6a5280610f835280611e9d528061290e5280612ae35280612ce8528061371a52806141155280614768525080610a195280610b5f5280610d435280610ee75280610f37528061106552806111595280611405528061142e5280611553528061169752806116c75280611964528061199b5280611ce55280611dd15280611dfa528061215b528061218952806122b0528061235d52806126dc52806127bb52806128ec5280612abc5280612c4c5280612c9c5280612dca5280612ebe5280613450528061358752806136eb5280613b5d52806140f3528061474652508061057a528061098e5280610b3d5280610cce5280610d1e5280610e4c5280610f5c52806110ba52806113d15280611458528061151d528061165352806116f1528061184b5280611ad45280611bca5280611cb65280611e245280612074528061228752806122da528061269c528061271c52806128ca5280612a475280612a975280612bc55280612cc15280612e1f5280613410528061353652806136bc5280613b1452806140d152806147245250615e826000f3fe6080604052600436106101855760003560e01c806370e032b1116100d1578063a2d96f5f1161008a578063dd62ed3e11610064578063dd62ed3e14610455578063ddca3f4314610475578063f2fde38b14610497578063fdb5a03e146104b75761018c565b8063a2d96f5f14610400578063a9059cbb14610420578063d21220a7146104405761018c565b806370e032b1146103615780637cf134cb146103745780638da5cb5b146103965780638e005553146103ab57806395d89b41146103cb5780639f3e8b34146103e05761018c565b8063223b3b7a1161013e578063313ce56711610118578063313ce567146102df57806333bc230a146103015780634623c91d1461032157806370a08231146103415761018c565b8063223b3b7a1461027f57806323b872dd1461029f578063276cd920146102bf5761018c565b806306fdde0314610191578063095ea7b3146101bc5780630dfe1681146101e9578063135d4f241461020b578063157238661461022d57806318160ddd1461025d5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66104cc565b6040516101b3919061580f565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004615269565b610562565b6040516101b39190615804565b3480156101f557600080fd5b506101fe610578565b6040516101b39190615771565b34801561021757600080fd5b5061022b610226366004615294565b61059c565b005b34801561023957600080fd5b5061024d6102483660046155cb565b611231565b6040516101b39493929190615d53565b34801561026957600080fd5b50610272611280565b6040516101b39190615d92565b34801561028b57600080fd5b506101dc61029a36600461518c565b611286565b3480156102ab57600080fd5b506101dc6102ba3660046151fc565b61129b565b3480156102cb57600080fd5b5061022b6102da366004615459565b611306565b3480156102eb57600080fd5b506102f46114c2565b6040516101b39190615d9b565b34801561030d57600080fd5b5061022b61031c3660046153c7565b6114c7565b34801561032d57600080fd5b5061022b61033c36600461523c565b61175c565b34801561034d57600080fd5b5061027261035c36600461518c565b6117b1565b61022b61036f3660046153c7565b6117d0565b34801561038057600080fd5b50610389611e9b565b6040516101b39190615d82565b3480156103a257600080fd5b506101fe611ebf565b3480156103b757600080fd5b5061022b6103c636600461550f565b611ece565b3480156103d757600080fd5b506101a6611f16565b3480156103ec57600080fd5b506102726103fb36600461518c565b611f77565b34801561040c57600080fd5b5061022b61041b366004615459565b611f89565b34801561042c57600080fd5b506101dc61043b366004615269565b61234e565b34801561044c57600080fd5b506101fe61235b565b34801561046157600080fd5b506102726104703660046151c4565b61237f565b34801561048157600080fd5b5061048a6123aa565b6040516101b39190615d30565b3480156104a357600080fd5b5061022b6104b236600461518c565b6123b9565b3480156104c357600080fd5b5061022b612405565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b5050505050905090565b600061056f338484612f97565b50600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b336000818152602081905260409020544310156105d45760405162461bcd60e51b81526004016105cb90615842565b60405180910390fd5b6005546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105cb9061597f565b6040805160a08101825260045481526000602082018190529181019190915230606082015260001960808201526106348161304b565b50505060006008805480602002602001604051908101604052809291908181526020016000905b828210156106cf57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff16606082015282526001909201910161065b565b50505050905060005b81518110156107765773c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166342966c6883838151811061071057fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016107389190615d3f565b600060405180830381600087803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b5050600190920191506106d89050565b50610783600860006150b9565b60005b84518110156109735784818151811061079b57fe5b60200260200101516040015160020b8582815181106107b657fe5b60200260200101516020015160020b136107e25760405162461bcd60e51b81526004016105cb90615abb565b801561083f578460018203815181106107f757fe5b60200260200101516040015160020b85828151811061081257fe5b60200260200101516020015160020b131561083f5760405162461bcd60e51b81526004016105cb90615abb565b600085828151811061084d57fe5b60200260200101516060015162ffffff161161087b5760405162461bcd60e51b81526004016105cb9061599c565b84818151811061088757fe5b6020026020010151600001516001600160b81b03166000146108bb5760405162461bcd60e51b81526004016105cb90615946565b60088582815181106108c957fe5b60209081029190910181015182546001818101855560009485529383902082519101805493830151604084015160609094015162ffffff908116600160e81b026001600160e81b03600296870b8316600160d01b0262ffffff60d01b199490970b909216600160b81b0262ffffff60b81b196001600160b81b039096166001600160b81b031990981697909717949094169590951716929092179290921691909117905501610786565b506040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906109c3903090600401615771565b60206040518083038186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1391906155e3565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610a639190615771565b60206040518083038186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab391906155e3565b9050600080610afa6040518060c001604052808681526020018581526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152958290039594819003949193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290610ba9907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b158015610bc157600080fd5b505afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c3157600080fd5b505afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c69919061552b565b50505050505090508284028286021115610e8a57600082610caf610c9b86856001600160a01b0316600160601b613ba5565b846001600160a01b0316600160601b613ba5565b018486028488020381610cbe57fe5b049050610d096001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991610dea9190600401615bb4565b602060405180830381600087803b158015610e0457600080fd5b505af1925050508015610e34575060408051601f3d908101601f19168201909252610e31918101906155e3565b60015b610e3d57610e3f565b505b610e886001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b82840282860210156110a357600083610ec8610eb485600160601b866001600160a01b0316613ba5565b600160601b856001600160a01b0316613ba5565b018387028587020381610ed757fe5b049050610f226001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf389916110039190600401615bb4565b602060405180830381600087803b15801561101d57600080fd5b505af192505050801561104d575060408051601f3d908101601f1916820190925261104a918101906155e3565b60015b61105657611058565b505b6110a16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906110ef903090600401615771565b60206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f91906155e3565b6040516370a0823160e01b81529095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061118e903090600401615771565b60206040518083038186803b1580156111a657600080fd5b505afa1580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de91906155e3565b93506112226040518060c001604052808781526020018681526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b50505050505050505050505050565b6008818154811061124157600080fd5b6000918252602090912001546001600160b81b0381169150600160b81b8104600290810b91600160d01b810490910b90600160e81b900462ffffff1684565b60045490565b60036020526000908152604090205460ff1681565b60006112a8848484613d53565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112ec5760405162461bcd60e51b81526004016105cb906159d4565b6112f98533858403612f97565b60019150505b9392505050565b336000818152602081905260409020544310156113355760405162461bcd60e51b81526004016105cb90615842565b61133e33613e4f565b816080013542111561134f57600080fd5b6000808061136a6113653687900387018761546a565b61304b565b9194509250905061137c338635613e6e565b84602001358310156113a05760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156113c45760405162461bcd60e51b81526004016105cb90615a9e565b6113f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b61142c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df8386866040516114b393929190615d0f565b60405180910390a35050505050565b601290565b336000818152602081905260409020544310156114f65760405162461bcd60e51b81526004016105cb90615842565b6114ff33613e4f565b8160a0013542111561151057600080fd5b6115466001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308535613f50565b61157f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633306020860135613f50565b600080808061159b611596368890038801886153de565b613483565b9350935093509350816001600160801b0316600014156115cd576115c833826001600160801b0316613f77565b6115f5565b6115f5336115f0836001600160801b0316600454866001600160801b0316613ba5565b613f77565b85604001358410156116195760405162461bcd60e51b81526004016105cb906158f0565b856060013583101561163d5760405162461bcd60e51b81526004016105cb90615a9e565b853584101561167e5761167e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338835879003613f31565b82866020013511156116c5576116c56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016336020890135869003613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be83878760405161174c93929190615d0f565b60405180910390a3505050505050565b6005546001600160a01b031633146117865760405162461bcd60e51b81526004016105cb9061597f565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600160205260409020545b919050565b60095460ff16156117f35760405162461bcd60e51b81526004016105cb90615929565b6009805460ff191660011790553360008181526020819052604090205443101561182f5760405162461bcd60e51b81526004016105cb90615842565b61183833613e4f565b8160a0013542111561184957600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156119995781353411156118cc5760405133908335340380156108fc02916000818181858888f193505050501580156118c6573d6000803e3d6000fd5b506118ec565b348235146118ec5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083600001356040518263ffffffff1660e01b81526004016000604051808303818588803b15801561193f57600080fd5b505af1158015611953573d6000803e3d6000fd5b506119949350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050306020860135613f50565b611b01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146119f55760405162461bcd60e51b81526004016105cb906158d3565b8160200135341115611a395760405133906020840135340380156108fc02916000818181858888f19350505050158015611a33573d6000803e3d6000fd5b50611a5c565b81602001353414611a5c5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083602001356040518263ffffffff1660e01b81526004016000604051808303818588803b158015611aaf57600080fd5b505af1158015611ac3573d6000803e3d6000fd5b50611b019350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050308535613f50565b6000808080611b18611596368890038801886153de565b9350935093509350816001600160801b031660001415611b4a57611b4533826001600160801b0316613f77565b611b6d565b611b6d336115f0836001600160801b0316600454866001600160801b0316613ba5565b8560400135841015611b915760405162461bcd60e51b81526004016105cb906158f0565b8560600135831015611bb55760405162461bcd60e51b81526004016105cb90615a9e565b853584900360208701358490038115611cdd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611ca957604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611c44908590600401615d92565b600060405180830381600087803b158015611c5e57600080fd5b505af1158015611c72573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015611ca3573d6000803e3d6000fd5b50611cdd565b611cdd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b8015611df8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611dc457604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611d5f908490600401615d92565b600060405180830381600087803b158015611d7957600080fd5b505af1158015611d8d573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611dbe573d6000803e3d6000fd5b50611df8565b611df86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be858989604051611e7f93929190615d0f565b60405180910390a350506009805460ff19169055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6005546001600160a01b031690565b6005546001600160a01b03163314611ef85760405162461bcd60e51b81526004016105cb9061597f565b6009805461ffff9092166101000262ffff0019909216919091179055565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b60006020819052908152604090205481565b60095460ff1615611fac5760405162461bcd60e51b81526004016105cb90615929565b6009805460ff1916600117905533600081815260208190526040902054431015611fe85760405162461bcd60e51b81526004016105cb90615842565b611ff133613e4f565b816080013542111561200257600080fd5b600080806120186113653687900387018761546a565b9194509250905061202a338635613e6e565b846020013583101561204e5760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156120725760405162461bcd60e51b81526004016105cb90615a9e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2141561218757604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906120ee908690600401615d92565b600060405180830381600087803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f1935050505015801561214d573d6000803e3d6000fd5b506121826001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b6122ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146121e35760405162461bcd60e51b81526004016105cb906158d3565b604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d9061221a908590600401615d92565b600060405180830381600087803b15801561223457600080fd5b505af1158015612248573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015612279573d6000803e3d6000fd5b506122ae6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df83868660405161233593929190615d0f565b60405180910390a350506009805460ff19169055505050565b600061056f338484613d53565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600954610100900461ffff1681565b6005546001600160a01b031633146123e35760405162461bcd60e51b81526004016105cb9061597f565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526003602052604090205460ff166124345760405162461bcd60e51b81526004016105cb9061585f565b336000818152602081905260409020544310156124635760405162461bcd60e51b81526004016105cb90615842565b60006008805480602002602001604051908101604052809291908181526020016000905b828210156124fb57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101612487565b505050509050600080600080600090505b84518110156126695784818151811061252157fe5b6020026020010151600001516001600160b81b0316600014156125565760405162461bcd60e51b81526004016105cb90615ad8565b84818151811061256257fe5b60200260200101516060015162ffffff168401935060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808a87815181106125b457fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526126069190600401615b2e565b6040805180830381600087803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126579190615636565b9501949390930192505060010161250c565b5060095461271061010090910461ffff16838102829004919083020481156126c5576005546126c5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561270557600554612705906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612751903090600401615771565b60206040518083038186803b15801561276957600080fd5b505afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a191906155e3565b6040516370a0823160e01b81529094506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906127f0903090600401615771565b60206040518083038186803b15801561280857600080fd5b505afa15801561281c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284091906155e3565b92506000806128876040518060c001604052808881526020018781526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152978290039796819003969193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290612936907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561294e57600080fd5b505afa158015612962573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298691906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156129be57600080fd5b505afa1580156129d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f6919061552b565b50505050505090508286028288021115612c0357600082612a28610c9b86856001600160a01b0316600160601b613ba5565b01848802848a020381612a3757fe5b049050612a826001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612b639190600401615bb4565b602060405180830381600087803b158015612b7d57600080fd5b505af1925050508015612bad575060408051601f3d908101601f19168201909252612baa918101906155e3565b60015b612bb657612bb8565b505b612c016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b8286028288021015612e0857600083612c2d610eb485600160601b866001600160a01b0316613ba5565b018389028589020381612c3c57fe5b049050612c876001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612d689190600401615bb4565b602060405180830381600087803b158015612d8257600080fd5b505af1925050508015612db2575060408051601f3d908101601f19168201909252612daf918101906155e3565b60015b612dbb57612dbd565b505b612e066001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612e54903090600401615771565b60206040518083038186803b158015612e6c57600080fd5b505afa158015612e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea491906155e3565b6040516370a0823160e01b81529097506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612ef3903090600401615771565b60206040518083038186803b158015612f0b57600080fd5b505afa158015612f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4391906155e3565b9550612f876040518060c001604052808981526020018881526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050505050505050505050505050565b6001600160a01b038316612fbd5760405162461bcd60e51b81526004016105cb90615a48565b6001600160a01b038216612fe35760405162461bcd60e51b81526004016105cb90615a65565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061303e908590615d92565b60405180910390a3505050565b6000806000806008805480602002602001604051908101604052809291908181526020016000905b828210156130e757600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101613073565b50505050905060008060005b83518161ffff1610156133dc57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab88868461ffff168151811061313557fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161315d9190615d3f565b6101806040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ae9190615659565b5050505097505050505050505060006131d7826001600160801b03168b60000151600454613ba5565b905060006040518060a00160405280888661ffff16815181106131f657fe5b6020026020010151600001516001600160b81b03168152602001836001600160801b0316815260200160008152602001600081526020018c60800151815250905060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b0316630c49ccbe846040518263ffffffff1660e01b815260040161327a9190615b71565b6040805180830381600087803b15801561329357600080fd5b505af11580156132a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cb9190615636565b9150915060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808e8c61ffff168151811061331057fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526133629190600401615b2e565b6040805180830381600087803b15801561337b57600080fd5b505af115801561338f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b39190615636565b9e85019e9d84019d9c9096019b93909503989098019750900394909401935050506001016130f3565b5060095461271061010090910461ffff16928302819004929190910204811561343957600554613439906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561347957600554613479906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b5050509193909250565b60008060008060006008805480602002602001604051908101604052809291908181526020016000905b8282101561352157600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff1660608201528252600190920191016134ad565b50508851929350613574926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925073c36442b4a4522e871399cd717abdd847ab11fe889150613c54565b60208601516135c3906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169073c36442b4a4522e871399cd717abdd847ab11fe8890613c54565b6000806000835167ffffffffffffffff811180156135e057600080fd5b5060405190808252806020026020018201604052801561360a578160200160208202803683370190505b5090506000845167ffffffffffffffff8111801561362757600080fd5b50604051908082528060200260200182016040528015613651578160200160208202803683370190505b50905061365d8561400a565b919a509296509094509092509050831580159061367a5750600083115b1561369c57613696858b600001518c60200151878787876146d3565b90945092505b60005b85518161ffff161015613b065760006040518061016001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff168152602001888461ffff168151811061375357fe5b60200260200101516040015160020b8152602001888461ffff168151811061377757fe5b60200260200101516020015160020b815260200160008152602001600081526020016000815260200160008152602001306001600160a01b031681526020018d60a00151815250905060006040518060c00160405280898561ffff16815181106137dd57fe5b6020026020010151600001516001600160b81b03168152602001600081526020016000815260200160008152602001600081526020018e60a00151815250905060008711156138815761384c8d60000151868561ffff168151811061383e57fe5b602002602001015189613ba5565b60a08301819052602082015260408d015185516138749190879061ffff871690811061383e57fe5b60e0830181905260608201525b85156138e3576138ad8d60200151858561ffff168151811061389f57fe5b602002602001015188613ba5565b60c08301819052604082015260608d015184516138d59190869061ffff871690811061389f57fe5b610100830181905260808201525b60008260a0015111806138fa575060008260c00151115b15613afc576139076150da565b888461ffff168151811061391757fe5b6020026020010151600001516001600160b81b031660001415613a3957604051634418b22b60e11b815273c36442b4a4522e871399cd717abdd847ab11fe889063883164569061396b908690600401615c61565b608060405180830381600087803b15801561398557600080fd5b505af19250505080156139b5575060408051601f3d908101601f191682019092526139b2918101906155fb565b60015b6139be576139dc565b9284526001600160801b039091166020840152604083015260608201525b80516008805461ffff87169081106139f057fe5b60009182526020918290200180546001600160b81b0319166001600160b81b03939093169290921790915560408201516060830151918301519e019d9c019b9990990198613afa565b60405163219f5d1760e01b815273c36442b4a4522e871399cd717abdd847ab11fe889063219f5d1790613a70908590600401615c1d565b606060405180830381600087803b158015613a8a57600080fd5b505af1925050508015613aba575060408051601f3d908101601f19168201909252613ab7918101906154db565b60015b613ac357613ade565b6001600160801b039092166020840152604083015260608201525b80604001518d019c5080606001518c019b5080602001518a0199505b505b505060010161369f565b50613b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b613b996001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b50505050509193509193565b6000808060001985870986860292508281109083900303905080613bdb5760008411613bd057600080fd5b5082900490506112ff565b808411613be757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b801580613cdc5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90613c8a9030908690600401615785565b60206040518083038186803b158015613ca257600080fd5b505afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda91906155e3565b155b613cf85760405162461bcd60e51b81526004016105cb90615b12565b613d4e8363095ea7b360e01b8484604051602401613d179291906157eb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a9c565b505050565b6001600160a01b038316613d795760405162461bcd60e51b81526004016105cb9061587c565b6001600160a01b038216613d9f5760405162461bcd60e51b81526004016105cb90615899565b613daa838383613d4e565b6001600160a01b03831660009081526001602052604090205481811015613de35760405162461bcd60e51b81526004016105cb90615a0e565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e41908690615d92565b60405180910390a350505050565b6001600160a01b03166000908152602081905260409020436001019055565b6001600160a01b038216613e945760405162461bcd60e51b81526004016105cb90615a2b565b613ea082600083613d4e565b6001600160a01b03821660009081526001602052604090205481811015613ed95760405162461bcd60e51b81526004016105cb90615af5565b6001600160a01b0383166000818152600160205260408082208585039055600480548690039055519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061303e908690615d92565b613d4e8363a9059cbb60e01b8484604051602401613d179291906157eb565b613f71846323b872dd60e01b858585604051602401613d17939291906157c7565b50505050565b6001600160a01b038216613f9d5760405162461bcd60e51b81526004016105cb906158b6565b613fa960008383613d4e565b60048054820190556001600160a01b038216600081815260016020526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613ffe908590615d92565b60405180910390a35050565b6000806000606080855167ffffffffffffffff8111801561402a57600080fd5b50604051908082528060200260200182016040528015614054578160200160208202803683370190505b509150855167ffffffffffffffff8111801561406f57600080fd5b50604051908082528060200260200182016040528015614099578160200160208202803683370190505b50604051630b4c774160e11b81529091506000908190731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061413d907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561415557600080fd5b505afa158015614169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418d91906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156141c557600080fd5b505afa1580156141d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141fd919061552b565b50505050509150915061420e61510b565b6000806142328b60008151811061422157fe5b602002602001015160400151614b10565b6001600160a01b031683528a5161425f908c9060009061424e57fe5b602002602001015160200151614b10565b6001600160a01b031660208401528a518b9060009061427a57fe5b60200260200101516060015162ffffff1691508a60018c51038151811061429d57fe5b60200260200101516060015162ffffff16905060005b8b518161ffff1610156146c45760008c8261ffff16815181106142d257fe5b6020026020010151600001516001600160b81b031611156143af57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab888e8461ffff168151811061432257fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161434a9190615d3f565b6101806040518083038186803b15801561436357600080fd5b505afa158015614377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439b9190615659565b50505050975050505050505050808a019950505b6143b761510b565b6143ca8d8361ffff168151811061422157fe5b6001600160a01b031681528c516143eb908e9061ffff851690811061424e57fe5b6001600160a01b031660208201528c518d9061ffff841690811061440b57fe5b60200260200101516040015160020b8660020b136144cb57838d8361ffff168151811061443457fe5b60200260200101516060015162ffffff1661448561447861446889600001518a602001518b600001518c6020015103613ba5565b8551602087015190810390613ba5565b8451600160601b90613ba5565b028161448d57fe5b04898361ffff168151811061449e57fe5b602002602001018181525050888261ffff16815181106144ba57fe5b60200260200101518c019b506146bb565b8c8261ffff16815181106144db57fe5b60200260200101516020015160020b8660020b1261457e57828d8361ffff168151811061450457fe5b60200260200101516060015162ffffff166145388360000151846020015103600160601b89600001518a6020015103613ba5565b028161454057fe5b04888361ffff168151811061455157fe5b602002602001018181525050878261ffff168151811061456d57fe5b60200260200101518b019a506146bb565b838d8361ffff168151811061458f57fe5b60200260200101516060015162ffffff166145ee6145da6145c389600001518a602001518b600001518c6020015103613ba5565b60208601516001600160a01b038d16810390613ba5565b600160601b8b6001600160a01b0316613ba5565b02816145f657fe5b04898361ffff168151811061460757fe5b602002602001018181525050828d8361ffff168151811061462457fe5b60200260200101516060015162ffffff1661465d83600001518a6001600160a01b031603600160601b89600001518a6020015103613ba5565b028161466557fe5b04888361ffff168151811061467657fe5b602002602001018181525050888261ffff168151811061469257fe5b60200260200101518c019b50878261ffff16815181106146ae57fe5b60200260200101518b019a505b506001016142b3565b50505050505091939590929450565b6000808851600114156146ea575084905083614a90565b6146f261510b565b604051630b4c774160e11b8152600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290614790907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b1580156147a857600080fd5b505afa1580156147bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e091906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561481857600080fd5b505afa15801561482c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614850919061552b565b50505050505090506148b18161486c8d60008151811061422157fe5b61487c8e60008151811061424e57fe5b61489b8e8b60008151811061488d57fe5b60200260200101518e613ba5565b6148ac8e8b60008151811061488d57fe5b614e29565b6001600160801b031682528a516000198101906149179083906148da908f908590811061422157fe5b6148e98f858151811061424e57fe5b6149078f8c87815181106148f957fe5b60200260200101518f613ba5565b6148ac8f8c88815181106148f957fe5b6001600160801b031660208401528b518c9060009061493257fe5b60200260200101516060015162ffffff168360200151028c828151811061495557fe5b60200260200101516060015162ffffff168460000151021115614a025760008c60008151811061498157fe5b60200260200101516060015162ffffff1684602001510211156149f5576149ee898d83815181106149ae57fe5b60200260200101516060015162ffffff168560000151028e6000815181106149d257fe5b60200260200101516060015162ffffff16866020015102613ba5565b94506149fa565b600094505b879350614a8c565b88945060008c8281518110614a1357fe5b60200260200101516060015162ffffff168460000151021115614a8757614a80888d600081518110614a4157fe5b60200260200101516060015162ffffff168560200151028e8481518110614a6457fe5b60200260200101516060015162ffffff16866000015102613ba5565b9350614a8c565b600093505b5050505b97509795505050505050565b6000614ad68260405180604001604052806002815260200161523760f01b815250856001600160a01b0316614eed9092919063ffffffff16565b805190915015613d4e5780806020019051810190614af491906153ab565b613d4e5760405162461bcd60e51b81526004016105cb90615a82565b60008060008360020b12614b27578260020b614b2f565b8260020b6000035b9050620d89e8811115614b545760405162461bcd60e51b81526004016105cb906159b9565b600060018216614b6857600160801b614b7a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614bae576ffff97272373d413259a46990580e213a0260801c5b6004821615614bcd576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614bec576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614c0b576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614c2a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614c49576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614c68576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614c88576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614ca8576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614cc8576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614ce8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614d08576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614d28576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614d48576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614d68576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614d89576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614da9576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614dc8576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614de5576b048a170391f7dc42444e8fa20260801c5b60008460020b1315614e00578060001981614dfc57fe5b0490505b640100000000810615614e14576001614e17565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614e49579293925b846001600160a01b0316866001600160a01b031611614e7457614e6d858585614f04565b9050614ee4565b836001600160a01b0316866001600160a01b03161015614ed6576000614e9b878686614f04565b90506000614eaa878986614f67565b9050806001600160801b0316826001600160801b031610614ecb5780614ecd565b815b92505050614ee4565b614ee1858584614f67565b90505b95945050505050565b6060614efc8484600085614fa4565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614f24579192915b6000614f47856001600160a01b0316856001600160a01b0316600160601b613ba5565b9050614ee4614f6284838888036001600160a01b0316613ba5565b615064565b6000826001600160a01b0316846001600160a01b03161115614f87579192915b614efc614f6283600160601b8787036001600160a01b0316613ba5565b606082471015614fc65760405162461bcd60e51b81526004016105cb9061590d565b614fcf8561507a565b614feb5760405162461bcd60e51b81526004016105cb90615963565b600080866001600160a01b031685876040516150079190615755565b60006040518083038185875af1925050503d8060008114615044576040519150601f19603f3d011682016040523d82523d6000602084013e615049565b606091505b5091509150615059828286615080565b979650505050505050565b806001600160801b03811681146117cb57600080fd5b3b151590565b6060831561508f5750816112ff565b82511561509f5782518084602001fd5b8160405162461bcd60e51b81526004016105cb919061580f565b50805460008255906000526020600020908101906150d79190615125565b50565b60405180608001604052806000815260200160006001600160801b0316815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b5b8082111561513a5760008155600101615126565b5090565b80516117cb81615df9565b80356117cb81615e1c565b80516117cb81615e1c565b80516001600160801b03811681146117cb57600080fd5b80356117cb81615e3b565b80516117cb81615e3b565b60006020828403121561519d578081fd5b81356112ff81615df9565b6000602082840312156151b9578081fd5b81516112ff81615df9565b600080604083850312156151d6578081fd5b82356151e181615df9565b915060208301356151f181615df9565b809150509250929050565b600080600060608486031215615210578081fd5b833561521b81615df9565b9250602084013561522b81615df9565b929592945050506040919091013590565b6000806040838503121561524e578182fd5b823561525981615df9565b915060208301356151f181615e0e565b6000806040838503121561527b578182fd5b823561528681615df9565b946020939093013593505050565b600060208083850312156152a6578182fd5b823567ffffffffffffffff808211156152bd578384fd5b818501915085601f8301126152d0578384fd5b8135818111156152dc57fe5b6152e98485830201615da9565b818152848101908486016080808502870188018b1015615307578889fd5b8896505b8487101561539c5780828c031215615321578889fd5b60408051828101818110898211171561533657fe5b825283356001600160b81b038116811461534e578b8cfd5b8152838a013561535d81615e1c565b818b015261536c848301615149565b828201526060915061537f828501615176565b91810191909152845260019690960195928701929081019061530b565b50909998505050505050505050565b6000602082840312156153bc578081fd5b81516112ff81615e0e565b600060c082840312156153d8578081fd5b50919050565b600060c082840312156153ef578081fd5b60405160c0810181811067ffffffffffffffff8211171561540c57fe5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013561544181615df9565b608082015260a0928301359281019290925250919050565b600060a082840312156153d8578081fd5b600060a0828403121561547b578081fd5b60405160a0810181811067ffffffffffffffff8211171561549857fe5b806040525082358152602083013560208201526040830135604082015260608301356154c381615df9565b60608201526080928301359281019290925250919050565b6000806000606084860312156154ef578081fd5b6154f88461515f565b925060208401519150604084015190509250925092565b600060208284031215615520578081fd5b81356112ff81615e2b565b600080600080600080600060e0888a031215615545578485fd5b875161555081615df9565b602089015190975061556181615e1c565b604089015190965061557281615e2b565b606089015190955061558381615e2b565b608089015190945061559481615e2b565b60a089015190935060ff811681146155aa578283fd5b60c08901519092506155bb81615e0e565b8091505092959891949750929550565b6000602082840312156155dc578081fd5b5035919050565b6000602082840312156155f4578081fd5b5051919050565b60008060008060808587031215615610578182fd5b845193506156206020860161515f565b6040860151606090960151949790965092505050565b60008060408385031215615648578182fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f03121561567b578586fd5b8c516bffffffffffffffffffffffff81168114615696578687fd5b9b506156a460208e0161513e565b9a506156b260408e0161513e565b99506156c060608e0161513e565b98506156ce60808e01615181565b97506156dc60a08e01615154565b96506156ea60c08e01615154565b95506156f860e08e0161515f565b94506101008d015193506101208d015192506157176101408e0161515f565b91506157266101608e0161515f565b90509295989b509295989b509295989b565b6001600160a01b03169052565b60020b9052565b62ffffff169052565b60008251615767818460208701615dcd565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252825180602084015261582e816040850160208701615dcd565b601f01601f19169190910160400192915050565b60208082526003908201526205233360ec1b604082015260600190565b60208082526003908201526252313360e81b604082015260600190565b60208082526003908201526229191960e91b604082015260600190565b60208082526003908201526252323360e81b604082015260600190565b60208082526003908201526252323560e81b604082015260600190565b60208082526003908201526252313960e81b604082015260600190565b60208082526003908201526229189b60e91b604082015260600190565b602080825260029082015261148d60f21b604082015260600190565b602080825260039082015262148c4d60ea1b604082015260600190565b60208082526003908201526252313160e81b604082015260600190565b602080825260029082015261523560f01b604082015260600190565b60208082526003908201526252323160e81b604082015260600190565b60208082526003908201526205231360ec1b604082015260600190565b6020808252600190820152601560fa1b604082015260600190565b60208082526003908201526252313560e81b604082015260600190565b6020808252600390820152620a462760eb1b604082015260600190565b602080825260039082015262148c8d60ea1b604082015260600190565b60208082526003908201526229191b60e91b604082015260600190565b6020808252600390820152620a464760eb1b604082015260600190565b60208082526003908201526252323960e81b604082015260600190565b6020808252600290820152610a4760f31b604082015260600190565b60208082526003908201526252313760e81b604082015260600190565b60208082526003908201526229189960e91b604082015260600190565b60208082526003908201526205232360ec1b604082015260600190565b60208082526003908201526252323760e81b604082015260600190565b602080825260029082015261291b60f11b604082015260600190565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b600060a082019050825182526001600160801b03602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c0808401519083015260e09283015116918101919091526101000190565b600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b600061016082019050615c75828451615738565b6020830151615c876020840182615738565b506040830151615c9a604084018261574c565b506060830151615cad6060840182615745565b506080830151615cc06080840182615745565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615cfe82850182615738565b505061014092830151919092015290565b6001600160801b039390931683526020830191909152604082015260600190565b61ffff91909116815260200190565b6001600160b81b0391909116815260200190565b6001600160b81b03949094168452600292830b6020850152910b604083015262ffffff16606082015260800190565b62ffffff91909116815260200190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715615dc557fe5b604052919050565b60005b83811015615de8578181015183820152602001615dd0565b83811115613f715750506000910152565b6001600160a01b03811681146150d757600080fd5b80151581146150d757600080fd5b8060020b81146150d757600080fd5b61ffff811681146150d757600080fd5b62ffffff811681146150d757600080fdfea2646970667358221220e16fb29af291438b541627e21439b7cad8698cb0a4ade27e0e568ca5d67d489964736f6c63430007060033", + "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE PUSH1 0x9 DUP1 SLOAD PUSH3 0xFFFF00 NOT AND PUSH3 0x3E800 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x66FC CODESIZE SUB DUP1 PUSH3 0x66FC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x45 SWAP2 PUSH3 0x47D JUMP JUMPDEST DUP6 MLOAD PUSH3 0x5A SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP10 ADD SWAP1 PUSH3 0x304 JUMP JUMPDEST POP DUP5 MLOAD PUSH3 0x70 SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP9 ADD SWAP1 PUSH3 0x304 JUMP JUMPDEST POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH3 0xAE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xA5 SWAP1 PUSH3 0x62C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB NOT PUSH1 0xE8 DUP4 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0x2E4 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0xF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND GT PUSH3 0x127 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xA5 SWAP1 PUSH3 0x665 JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x134 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND PUSH1 0x0 EQ PUSH3 0x16B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xA5 SWAP1 PUSH3 0x648 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x1CE JUMPI DUP2 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH3 0x182 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x19E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH3 0x1CE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xA5 SWAP1 PUSH3 0x682 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x1F8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x219 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x23A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x60 SWAP1 DUP2 ADD MLOAD PUSH3 0xFFFFFF SWAP1 DUP2 AND SWAP1 SWAP4 MSTORE DUP5 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP8 SSTORE PUSH1 0x0 SWAP7 DUP8 MSTORE SWAP6 DUP4 SWAP1 KECCAK256 DUP6 MLOAD SWAP2 ADD DUP1 SLOAD SWAP4 DUP7 ADD MLOAD PUSH1 0x40 DUP8 ADD MLOAD SWAP7 SWAP1 SWAP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB NOT SWAP1 SWAP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH3 0xFFFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND DUP7 AND MUL OR PUSH3 0xFFFFFF PUSH1 0xD0 SHL NOT AND PUSH1 0x1 PUSH1 0xD0 SHL SWAP6 SWAP1 SWAP3 SIGNEXTEND DUP5 AND SWAP5 SWAP1 SWAP5 MUL OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP2 SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE ADD PUSH3 0xDD JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE POP PUSH3 0x6C3 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x33C JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x387 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x357 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x387 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x387 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x387 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x36A JUMP JUMPDEST POP PUSH3 0x395 SWAP3 SWAP2 POP PUSH3 0x399 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x395 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x39A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH3 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x3F1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x405 JUMPI INVALID JUMPDEST PUSH1 0x20 PUSH3 0x41B PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH3 0x69F JUMP JUMPDEST DUP3 DUP2 MSTORE DUP6 DUP3 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x42F JUMPI DUP4 DUP5 REVERT JUMPDEST DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x44E JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP3 DUP3 ADD DUP5 ADD MSTORE DUP3 ADD PUSH3 0x431 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x45F JUMPI DUP5 DUP4 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH3 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x496 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x4AD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x4BB DUP11 DUP4 DUP12 ADD PUSH3 0x3E0 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x4D1 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH3 0x4DF DUP11 DUP4 DUP12 ADD PUSH3 0x3E0 JUMP JUMPDEST SWAP7 POP PUSH3 0x4EF PUSH1 0x40 DUP11 ADD PUSH3 0x3B0 JUMP JUMPDEST SWAP6 POP PUSH3 0x4FF PUSH1 0x60 DUP11 ADD PUSH3 0x3B0 JUMP JUMPDEST SWAP5 POP PUSH3 0x50F PUSH1 0x80 DUP11 ADD PUSH3 0x469 JUMP JUMPDEST SWAP4 POP PUSH1 0xA0 DUP10 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x525 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x539 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x546 JUMPI INVALID JUMPDEST PUSH3 0x556 PUSH1 0x20 DUP1 DUP4 MUL ADD PUSH3 0x69F JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD DUP14 PUSH1 0x20 PUSH1 0x80 DUP7 MUL DUP9 ADD ADD GT ISZERO PUSH3 0x579 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH3 0x619 JUMPI PUSH1 0x80 DUP2 DUP16 SUB SLT ISZERO PUSH3 0x596 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT DUP8 DUP3 GT OR ISZERO PUSH3 0x5AC JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x5C6 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP2 MSTORE PUSH3 0x5D6 PUSH1 0x20 DUP4 ADD PUSH3 0x3CD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x5E9 PUSH1 0x40 DUP4 ADD PUSH3 0x3CD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH3 0x5FC PUSH1 0x60 DUP4 ADD PUSH3 0x469 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x80 ADD PUSH3 0x57D JUMP JUMPDEST POP DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x5239 PUSH1 0xF0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523131 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x52313 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x291899 PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x6BB JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0xE8 SHR PUSH2 0x5E82 PUSH3 0x87A PUSH1 0x0 CODECOPY DUP1 PUSH2 0xB81 MSTORE DUP1 PUSH2 0xD6A MSTORE DUP1 PUSH2 0xF83 MSTORE DUP1 PUSH2 0x1E9D MSTORE DUP1 PUSH2 0x290E MSTORE DUP1 PUSH2 0x2AE3 MSTORE DUP1 PUSH2 0x2CE8 MSTORE DUP1 PUSH2 0x371A MSTORE DUP1 PUSH2 0x4115 MSTORE DUP1 PUSH2 0x4768 MSTORE POP DUP1 PUSH2 0xA19 MSTORE DUP1 PUSH2 0xB5F MSTORE DUP1 PUSH2 0xD43 MSTORE DUP1 PUSH2 0xEE7 MSTORE DUP1 PUSH2 0xF37 MSTORE DUP1 PUSH2 0x1065 MSTORE DUP1 PUSH2 0x1159 MSTORE DUP1 PUSH2 0x1405 MSTORE DUP1 PUSH2 0x142E MSTORE DUP1 PUSH2 0x1553 MSTORE DUP1 PUSH2 0x1697 MSTORE DUP1 PUSH2 0x16C7 MSTORE DUP1 PUSH2 0x1964 MSTORE DUP1 PUSH2 0x199B MSTORE DUP1 PUSH2 0x1CE5 MSTORE DUP1 PUSH2 0x1DD1 MSTORE DUP1 PUSH2 0x1DFA MSTORE DUP1 PUSH2 0x215B MSTORE DUP1 PUSH2 0x2189 MSTORE DUP1 PUSH2 0x22B0 MSTORE DUP1 PUSH2 0x235D MSTORE DUP1 PUSH2 0x26DC MSTORE DUP1 PUSH2 0x27BB MSTORE DUP1 PUSH2 0x28EC MSTORE DUP1 PUSH2 0x2ABC MSTORE DUP1 PUSH2 0x2C4C MSTORE DUP1 PUSH2 0x2C9C MSTORE DUP1 PUSH2 0x2DCA MSTORE DUP1 PUSH2 0x2EBE MSTORE DUP1 PUSH2 0x3450 MSTORE DUP1 PUSH2 0x3587 MSTORE DUP1 PUSH2 0x36EB MSTORE DUP1 PUSH2 0x3B5D MSTORE DUP1 PUSH2 0x40F3 MSTORE DUP1 PUSH2 0x4746 MSTORE POP DUP1 PUSH2 0x57A MSTORE DUP1 PUSH2 0x98E MSTORE DUP1 PUSH2 0xB3D MSTORE DUP1 PUSH2 0xCCE MSTORE DUP1 PUSH2 0xD1E MSTORE DUP1 PUSH2 0xE4C MSTORE DUP1 PUSH2 0xF5C MSTORE DUP1 PUSH2 0x10BA MSTORE DUP1 PUSH2 0x13D1 MSTORE DUP1 PUSH2 0x1458 MSTORE DUP1 PUSH2 0x151D MSTORE DUP1 PUSH2 0x1653 MSTORE DUP1 PUSH2 0x16F1 MSTORE DUP1 PUSH2 0x184B MSTORE DUP1 PUSH2 0x1AD4 MSTORE DUP1 PUSH2 0x1BCA MSTORE DUP1 PUSH2 0x1CB6 MSTORE DUP1 PUSH2 0x1E24 MSTORE DUP1 PUSH2 0x2074 MSTORE DUP1 PUSH2 0x2287 MSTORE DUP1 PUSH2 0x22DA MSTORE DUP1 PUSH2 0x269C MSTORE DUP1 PUSH2 0x271C MSTORE DUP1 PUSH2 0x28CA MSTORE DUP1 PUSH2 0x2A47 MSTORE DUP1 PUSH2 0x2A97 MSTORE DUP1 PUSH2 0x2BC5 MSTORE DUP1 PUSH2 0x2CC1 MSTORE DUP1 PUSH2 0x2E1F MSTORE DUP1 PUSH2 0x3410 MSTORE DUP1 PUSH2 0x3536 MSTORE DUP1 PUSH2 0x36BC MSTORE DUP1 PUSH2 0x3B14 MSTORE DUP1 PUSH2 0x40D1 MSTORE DUP1 PUSH2 0x4724 MSTORE POP PUSH2 0x5E82 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x185 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70E032B1 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA2D96F5F GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0xFDB5A03E EQ PUSH2 0x4B7 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0xA2D96F5F EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x440 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x70E032B1 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0x7CF134CB EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x8E005553 EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x9F3E8B34 EQ PUSH2 0x3E0 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x223B3B7A GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x33BC230A EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x4623C91D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x341 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x223B3B7A EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0x276CD920 EQ PUSH2 0x2BF JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x135D4F24 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x15723866 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x25D JUMPI PUSH2 0x18C JUMP JUMPDEST CALLDATASIZE PUSH2 0x18C JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A6 PUSH2 0x4CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x580F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x5269 JUMP JUMPDEST PUSH2 0x562 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5804 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x578 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5771 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x5294 JUMP JUMPDEST PUSH2 0x59C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x55CB JUMP JUMPDEST PUSH2 0x1231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x1280 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x1286 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x51FC JUMP JUMPDEST PUSH2 0x129B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x2DA CALLDATASIZE PUSH1 0x4 PUSH2 0x5459 JUMP JUMPDEST PUSH2 0x1306 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH2 0x14C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D9B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x53C7 JUMP JUMPDEST PUSH2 0x14C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x523C JUMP JUMPDEST PUSH2 0x175C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x35C CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x17B1 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x53C7 JUMP JUMPDEST PUSH2 0x17D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x389 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x1EBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x550F JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A6 PUSH2 0x1F16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x1F77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x5459 JUMP JUMPDEST PUSH2 0x1F89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x5269 JUMP JUMPDEST PUSH2 0x234E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x235B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x51C4 JUMP JUMPDEST PUSH2 0x237F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48A PUSH2 0x23AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x23B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x2405 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x558 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x52D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x558 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x53B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F CALLER DUP5 DUP5 PUSH2 0x2F97 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x634 DUP2 PUSH2 0x304B JUMP JUMPDEST POP POP POP PUSH1 0x0 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x6CF JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x65B JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x776 JUMPI PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x42966C68 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x710 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x738 SWAP2 SWAP1 PUSH2 0x5D3F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x766 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x6D8 SWAP1 POP JUMP JUMPDEST POP PUSH2 0x783 PUSH1 0x8 PUSH1 0x0 PUSH2 0x50B9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x973 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x79B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x7E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5ABB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x83F JUMPI DUP5 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x7F7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x812 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x83F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5ABB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x84D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND GT PUSH2 0x87B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x599C JUMP JUMPDEST DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x887 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND PUSH1 0x0 EQ PUSH2 0x8BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5946 JUMP JUMPDEST PUSH1 0x8 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8C9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE SWAP4 DUP4 SWAP1 KECCAK256 DUP3 MLOAD SWAP2 ADD DUP1 SLOAD SWAP4 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP4 AND PUSH1 0x1 PUSH1 0xD0 SHL MUL PUSH3 0xFFFFFF PUSH1 0xD0 SHL NOT SWAP5 SWAP1 SWAP8 SIGNEXTEND SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xB8 SHL MUL PUSH3 0xFFFFFF PUSH1 0xB8 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB NOT SWAP1 SWAP9 AND SWAP8 SWAP1 SWAP8 OR SWAP5 SWAP1 SWAP5 AND SWAP6 SWAP1 SWAP6 OR AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE ADD PUSH2 0x786 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x9C3 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA63 SWAP2 SWAP1 PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAB3 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0xAFA PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE SWAP6 DUP3 SWAP1 SUB SWAP6 SWAP5 DUP2 SWAP1 SUB SWAP5 SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0xBA9 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF9 SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP DUP3 DUP5 MUL DUP3 DUP7 MUL GT ISZERO PUSH2 0xE8A JUMPI PUSH1 0x0 DUP3 PUSH2 0xCAF PUSH2 0xC9B DUP7 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP5 DUP7 MUL DUP5 DUP9 MUL SUB DUP2 PUSH2 0xCBE JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xD09 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0xDEA SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE34 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE31 SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xE3D JUMPI PUSH2 0xE3F JUMP JUMPDEST POP JUMPDEST PUSH2 0xE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST DUP3 DUP5 MUL DUP3 DUP7 MUL LT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x0 DUP4 PUSH2 0xEC8 PUSH2 0xEB4 DUP6 PUSH1 0x1 PUSH1 0x60 SHL DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP4 DUP8 MUL DUP6 DUP8 MUL SUB DUP2 PUSH2 0xED7 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xF22 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x1003 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x104D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x104A SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1056 JUMPI PUSH2 0x1058 JUMP JUMPDEST POP JUMPDEST PUSH2 0x10A1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x10EF SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x111B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x113F SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP6 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x118E SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11DE SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1222 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0xD0 SHL DUP2 DIV SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND DUP5 JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12A8 DUP5 DUP5 DUP5 PUSH2 0x3D53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59D4 JUMP JUMPDEST PUSH2 0x12F9 DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x2F97 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x133E CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0x80 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x134F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x136A PUSH2 0x1365 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x546A JUMP JUMPDEST PUSH2 0x304B JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x137C CALLER DUP7 CALLDATALOAD PUSH2 0x3E6E JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x13A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST PUSH2 0x13F8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP6 PUSH2 0x3F31 JUMP JUMPDEST PUSH2 0x142C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP5 PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF56FDA5B6BB8F75F807E6A868835D0A42A72BE51A6F15FD874ACDD3CBE3087DF DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x14B3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x14FF CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0xA0 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x1510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1546 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP6 CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH2 0x157F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x159B PUSH2 0x1596 CALLDATASIZE DUP9 SWAP1 SUB DUP9 ADD DUP9 PUSH2 0x53DE JUMP JUMPDEST PUSH2 0x3483 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x15CD JUMPI PUSH2 0x15C8 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x15F5 CALLER PUSH2 0x15F0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x4 SLOAD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x3F77 JUMP JUMPDEST DUP6 PUSH1 0x40 ADD CALLDATALOAD DUP5 LT ISZERO PUSH2 0x1619 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP6 PUSH1 0x60 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x163D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST DUP6 CALLDATALOAD DUP5 LT ISZERO PUSH2 0x167E JUMPI PUSH2 0x167E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP9 CALLDATALOAD DUP8 SWAP1 SUB PUSH2 0x3F31 JUMP JUMPDEST DUP3 DUP7 PUSH1 0x20 ADD CALLDATALOAD GT ISZERO PUSH2 0x16C5 JUMPI PUSH2 0x16C5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER PUSH1 0x20 DUP10 ADD CALLDATALOAD DUP7 SWAP1 SUB PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF1CC7B6DD2DA0338FC327EE7647AEB5E744F007A5BBF0628A0033C6B5FFAF0BE DUP4 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x174C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1786 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x17F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x182F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x1838 CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0xA0 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x1849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x1999 JUMPI DUP2 CALLDATALOAD CALLVALUE GT ISZERO PUSH2 0x18CC JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 DUP4 CALLDATALOAD CALLVALUE SUB DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x18C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x18EC JUMP JUMPDEST CALLVALUE DUP3 CALLDATALOAD EQ PUSH2 0x18EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59F1 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1953 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1994 SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP CALLER SWAP1 POP ADDRESS PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH2 0x1B01 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ PUSH2 0x19F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58D3 JUMP JUMPDEST DUP2 PUSH1 0x20 ADD CALLDATALOAD CALLVALUE GT ISZERO PUSH2 0x1A39 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x20 DUP5 ADD CALLDATALOAD CALLVALUE SUB DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1A33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1A5C JUMP JUMPDEST DUP2 PUSH1 0x20 ADD CALLDATALOAD CALLVALUE EQ PUSH2 0x1A5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59F1 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1B01 SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP CALLER SWAP1 POP ADDRESS DUP6 CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1B18 PUSH2 0x1596 CALLDATASIZE DUP9 SWAP1 SUB DUP9 ADD DUP9 PUSH2 0x53DE JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x1B4A JUMPI PUSH2 0x1B45 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x1B6D JUMP JUMPDEST PUSH2 0x1B6D CALLER PUSH2 0x15F0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x4 SLOAD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST DUP6 PUSH1 0x40 ADD CALLDATALOAD DUP5 LT ISZERO PUSH2 0x1B91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP6 PUSH1 0x60 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x1BB5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST DUP6 CALLDATALOAD DUP5 SWAP1 SUB PUSH1 0x20 DUP8 ADD CALLDATALOAD DUP5 SWAP1 SUB DUP2 ISZERO PUSH2 0x1CDD JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x1CA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1C44 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP5 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP5 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1CA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1CDD JUMP JUMPDEST PUSH2 0x1CDD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP5 PUSH2 0x3F31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DF8 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x1DC4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1D5F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1DBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1DF8 JUMP JUMPDEST PUSH2 0x1DF8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP4 PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF1CC7B6DD2DA0338FC327EE7647AEB5E744F007A5BBF0628A0033C6B5FFAF0BE DUP6 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1E7F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH3 0xFFFF00 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x558 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x52D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x558 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1FAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x1FE8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x1FF1 CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0x80 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x2002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2018 PUSH2 0x1365 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x546A JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x202A CALLER DUP7 CALLDATALOAD PUSH2 0x3E6E JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x204E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x2072 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x2187 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x20EE SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x211C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP6 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP6 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x214D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x2182 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP5 PUSH2 0x3F31 JUMP JUMPDEST PUSH2 0x22AE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ PUSH2 0x21E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x221A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2248 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP5 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP5 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x22AE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP6 PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF56FDA5B6BB8F75F807E6A868835D0A42A72BE51A6F15FD874ACDD3CBE3087DF DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2335 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F CALLER DUP5 DUP5 PUSH2 0x3D53 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x23E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x585F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x2463 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x24FB JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2487 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2669 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2521 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x2556 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5AD8 JUMP JUMPDEST DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2562 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 ADD SWAP4 POP PUSH1 0x0 DUP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC6F7865 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP11 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x25B4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x2606 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x261F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2633 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2657 SWAP2 SWAP1 PUSH2 0x5636 JUMP JUMPDEST SWAP6 ADD SWAP5 SWAP4 SWAP1 SWAP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x250C JUMP JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x2710 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH2 0xFFFF AND DUP4 DUP2 MUL DUP3 SWAP1 DIV SWAP2 SWAP1 DUP4 MUL DIV DUP2 ISZERO PUSH2 0x26C5 JUMPI PUSH1 0x5 SLOAD PUSH2 0x26C5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP5 PUSH2 0x3F31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2705 JUMPI PUSH1 0x5 SLOAD PUSH2 0x2705 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3F31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2751 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x277D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27A1 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x27F0 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x281C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2840 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x2887 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE SWAP8 DUP3 SWAP1 SUB SWAP8 SWAP7 DUP2 SWAP1 SUB SWAP7 SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0x2936 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2962 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2986 SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29F6 SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP DUP3 DUP7 MUL DUP3 DUP9 MUL GT ISZERO PUSH2 0x2C03 JUMPI PUSH1 0x0 DUP3 PUSH2 0x2A28 PUSH2 0xC9B DUP7 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP5 DUP9 MUL DUP5 DUP11 MUL SUB DUP2 PUSH2 0x2A37 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2A82 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x2B63 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2BAD JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2BAA SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2BB6 JUMPI PUSH2 0x2BB8 JUMP JUMPDEST POP JUMPDEST PUSH2 0x2C01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST DUP3 DUP7 MUL DUP3 DUP9 MUL LT ISZERO PUSH2 0x2E08 JUMPI PUSH1 0x0 DUP4 PUSH2 0x2C2D PUSH2 0xEB4 DUP6 PUSH1 0x1 PUSH1 0x60 SHL DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP4 DUP10 MUL DUP6 DUP10 MUL SUB DUP2 PUSH2 0x2C3C JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2C87 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x2D68 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2DB2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2DAF SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2DBB JUMPI PUSH2 0x2DBD JUMP JUMPDEST POP JUMPDEST PUSH2 0x2E06 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2E54 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EA4 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2EF3 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F43 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP6 POP PUSH2 0x2F87 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2FBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2FE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x303E SWAP1 DUP6 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x30E7 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x3073 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x33DC JUMPI PUSH1 0x0 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x99FBAB88 DUP7 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3135 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x315D SWAP2 SWAP1 PUSH2 0x5D3F JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x318A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31AE SWAP2 SWAP1 PUSH2 0x5659 JUMP JUMPDEST POP POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH2 0x31D7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x4 SLOAD PUSH2 0x3BA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP7 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x31F6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x80 ADD MLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC49CCBE DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x327A SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32CB SWAP2 SWAP1 PUSH2 0x5636 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC6F7865 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP15 DUP13 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3310 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x3362 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x337B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x338F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33B3 SWAP2 SWAP1 PUSH2 0x5636 JUMP JUMPDEST SWAP15 DUP6 ADD SWAP15 SWAP14 DUP5 ADD SWAP14 SWAP13 SWAP1 SWAP7 ADD SWAP12 SWAP4 SWAP1 SWAP6 SUB SWAP9 SWAP1 SWAP9 ADD SWAP8 POP SWAP1 SUB SWAP5 SWAP1 SWAP5 ADD SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0x30F3 JUMP JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x2710 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH2 0xFFFF AND SWAP3 DUP4 MUL DUP2 SWAP1 DIV SWAP3 SWAP2 SWAP1 SWAP2 MUL DIV DUP2 ISZERO PUSH2 0x3439 JUMPI PUSH1 0x5 SLOAD PUSH2 0x3439 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP5 PUSH2 0x3F31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3479 JUMPI PUSH1 0x5 SLOAD PUSH2 0x3479 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3F31 JUMP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x3521 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x34AD JUMP JUMPDEST POP POP DUP9 MLOAD SWAP3 SWAP4 POP PUSH2 0x3574 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP3 POP PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP2 POP PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x35C3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP1 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x35E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x360A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP5 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3651 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x365D DUP6 PUSH2 0x400A JUMP JUMPDEST SWAP2 SWAP11 POP SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x367A JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x369C JUMPI PUSH2 0x3696 DUP6 DUP12 PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD DUP8 DUP8 DUP8 DUP8 PUSH2 0x46D3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3B06 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3753 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3777 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP14 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 DUP6 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x37DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP8 GT ISZERO PUSH2 0x3881 JUMPI PUSH2 0x384C DUP14 PUSH1 0x0 ADD MLOAD DUP7 DUP6 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x383E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP14 ADD MLOAD DUP6 MLOAD PUSH2 0x3874 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0xFFFF DUP8 AND SWAP1 DUP2 LT PUSH2 0x383E JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MSTORE JUMPDEST DUP6 ISZERO PUSH2 0x38E3 JUMPI PUSH2 0x38AD DUP14 PUSH1 0x20 ADD MLOAD DUP6 DUP6 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x389F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP14 ADD MLOAD DUP5 MLOAD PUSH2 0x38D5 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0xFFFF DUP8 AND SWAP1 DUP2 LT PUSH2 0x389F JUMPI INVALID JUMPDEST PUSH2 0x100 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE JUMPDEST PUSH1 0x0 DUP3 PUSH1 0xA0 ADD MLOAD GT DUP1 PUSH2 0x38FA JUMPI POP PUSH1 0x0 DUP3 PUSH1 0xC0 ADD MLOAD GT JUMPDEST ISZERO PUSH2 0x3AFC JUMPI PUSH2 0x3907 PUSH2 0x50DA JUMP JUMPDEST DUP9 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3917 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x3A39 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4418B22B PUSH1 0xE1 SHL DUP2 MSTORE PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP1 PUSH4 0x88316456 SWAP1 PUSH2 0x396B SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C61 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x39B5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x39B2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x55FB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x39BE JUMPI PUSH2 0x39DC JUMP JUMPDEST SWAP3 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x8 DUP1 SLOAD PUSH2 0xFFFF DUP8 AND SWAP1 DUP2 LT PUSH2 0x39F0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD SWAP15 ADD SWAP14 SWAP13 ADD SWAP12 SWAP10 SWAP1 SWAP10 ADD SWAP9 PUSH2 0x3AFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x219F5D17 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP1 PUSH4 0x219F5D17 SWAP1 PUSH2 0x3A70 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C1D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3ABA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3AB7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x54DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3AC3 JUMPI PUSH2 0x3ADE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD DUP14 ADD SWAP13 POP DUP1 PUSH1 0x60 ADD MLOAD DUP13 ADD SWAP12 POP DUP1 PUSH1 0x20 ADD MLOAD DUP11 ADD SWAP10 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x369F JUMP JUMPDEST POP PUSH2 0x3B50 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST PUSH2 0x3B99 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3BDB JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x3BD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x12FF JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3BE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x3CDC JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x3C8A SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5785 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CDA SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x3CF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5B12 JUMP JUMPDEST PUSH2 0x3D4E DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D17 SWAP3 SWAP2 SWAP1 PUSH2 0x57EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x4A9C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3D79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x587C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3D9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5899 JUMP JUMPDEST PUSH2 0x3DAA DUP4 DUP4 DUP4 PUSH2 0x3D4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3DE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A0E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP7 SUB SWAP1 SSTORE SWAP3 DUP7 AND DUP1 DUP3 MSTORE SWAP1 DUP4 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE SWAP2 MLOAD PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x3E41 SWAP1 DUP7 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3E94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A2B JUMP JUMPDEST PUSH2 0x3EA0 DUP3 PUSH1 0x0 DUP4 PUSH2 0x3D4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3ED9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5AF5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 SSTORE MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x303E SWAP1 DUP7 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH2 0x3D4E DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D17 SWAP3 SWAP2 SWAP1 PUSH2 0x57EB JUMP JUMPDEST PUSH2 0x3F71 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D17 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57C7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3F9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58B6 JUMP JUMPDEST PUSH2 0x3FA9 PUSH1 0x0 DUP4 DUP4 PUSH2 0x3D4E JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x3FFE SWAP1 DUP6 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP1 DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x402A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4054 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x406F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4099 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0x413D SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x418D SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x41C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41FD SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 POP PUSH2 0x420E PUSH2 0x510B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4232 DUP12 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP11 MLOAD PUSH2 0x425F SWAP1 DUP13 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE DUP11 MLOAD DUP12 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x427A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND SWAP2 POP DUP11 PUSH1 0x1 DUP13 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x429D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 POP PUSH1 0x0 JUMPDEST DUP12 MLOAD DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x46C4 JUMPI PUSH1 0x0 DUP13 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x42D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND GT ISZERO PUSH2 0x43AF JUMPI PUSH1 0x0 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x99FBAB88 DUP15 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4322 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x434A SWAP2 SWAP1 PUSH2 0x5D3F JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4377 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x439B SWAP2 SWAP1 PUSH2 0x5659 JUMP JUMPDEST POP POP POP POP SWAP8 POP POP POP POP POP POP POP POP DUP1 DUP11 ADD SWAP10 POP POP JUMPDEST PUSH2 0x43B7 PUSH2 0x510B JUMP JUMPDEST PUSH2 0x43CA DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE DUP13 MLOAD PUSH2 0x43EB SWAP1 DUP15 SWAP1 PUSH2 0xFFFF DUP6 AND SWAP1 DUP2 LT PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE DUP13 MLOAD DUP14 SWAP1 PUSH2 0xFFFF DUP5 AND SWAP1 DUP2 LT PUSH2 0x440B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x44CB JUMPI DUP4 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4434 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x4485 PUSH2 0x4478 PUSH2 0x4468 DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD SWAP1 DUP2 SUB SWAP1 PUSH2 0x3BA5 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x448D JUMPI INVALID JUMPDEST DIV DUP10 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x449E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP9 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x44BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 ADD SWAP12 POP PUSH2 0x46BB JUMP JUMPDEST DUP13 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x44DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x457E JUMPI DUP3 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4504 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x4538 DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x60 SHL DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x4540 JUMPI INVALID JUMPDEST DIV DUP9 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4551 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP8 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x456D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 ADD SWAP11 POP PUSH2 0x46BB JUMP JUMPDEST DUP4 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x458F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x45EE PUSH2 0x45DA PUSH2 0x45C3 DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP2 SUB SWAP1 PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x45F6 JUMPI INVALID JUMPDEST DIV DUP10 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP3 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4624 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x465D DUP4 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH1 0x1 PUSH1 0x60 SHL DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x4665 JUMPI INVALID JUMPDEST DIV DUP9 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4676 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP9 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4692 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 ADD SWAP12 POP DUP8 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x46AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 ADD SWAP11 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x42B3 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 SWAP1 SWAP3 SWAP5 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 MLOAD PUSH1 0x1 EQ ISZERO PUSH2 0x46EA JUMPI POP DUP5 SWAP1 POP DUP4 PUSH2 0x4A90 JUMP JUMPDEST PUSH2 0x46F2 PUSH2 0x510B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0x4790 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x47BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47E0 SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4818 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x482C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4850 SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH2 0x48B1 DUP2 PUSH2 0x486C DUP14 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH2 0x487C DUP15 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH2 0x489B DUP15 DUP12 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x488D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x48AC DUP15 DUP12 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x488D JUMPI INVALID JUMPDEST PUSH2 0x4E29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 MSTORE DUP11 MLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 PUSH2 0x4917 SWAP1 DUP4 SWAP1 PUSH2 0x48DA SWAP1 DUP16 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH2 0x48E9 DUP16 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH2 0x4907 DUP16 DUP13 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x48F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x48AC DUP16 DUP13 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x48F9 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE DUP12 MLOAD DUP13 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x4932 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD MUL DUP13 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4955 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 PUSH1 0x0 ADD MLOAD MUL GT ISZERO PUSH2 0x4A02 JUMPI PUSH1 0x0 DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4981 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 PUSH1 0x20 ADD MLOAD MUL GT ISZERO PUSH2 0x49F5 JUMPI PUSH2 0x49EE DUP10 DUP14 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x49AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP6 PUSH1 0x0 ADD MLOAD MUL DUP15 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x49D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP7 PUSH1 0x20 ADD MLOAD MUL PUSH2 0x3BA5 JUMP JUMPDEST SWAP5 POP PUSH2 0x49FA JUMP JUMPDEST PUSH1 0x0 SWAP5 POP JUMPDEST DUP8 SWAP4 POP PUSH2 0x4A8C JUMP JUMPDEST DUP9 SWAP5 POP PUSH1 0x0 DUP13 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4A13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 PUSH1 0x0 ADD MLOAD MUL GT ISZERO PUSH2 0x4A87 JUMPI PUSH2 0x4A80 DUP9 DUP14 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4A41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP6 PUSH1 0x20 ADD MLOAD MUL DUP15 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4A64 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP7 PUSH1 0x0 ADD MLOAD MUL PUSH2 0x3BA5 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A8C JUMP JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST POP POP POP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AD6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5237 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EED SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x3D4E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4AF4 SWAP2 SWAP1 PUSH2 0x53AB JUMP JUMPDEST PUSH2 0x3D4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4B27 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x4B2F JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x4B54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x4B68 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x4B7A JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x4BAE JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x4BCD JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x4BEC JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x4C0B JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x4C2A JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4C49 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4C68 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x4C88 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x4CA8 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x4CC8 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4CE8 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x4D08 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x4D28 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x4D48 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x4D68 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x4D89 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x4DA9 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x4DC8 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4DE5 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x4E00 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4DFC JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x4E14 JUMPI PUSH1 0x1 PUSH2 0x4E17 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4E49 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4E74 JUMPI PUSH2 0x4E6D DUP6 DUP6 DUP6 PUSH2 0x4F04 JUMP JUMPDEST SWAP1 POP PUSH2 0x4EE4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4ED6 JUMPI PUSH1 0x0 PUSH2 0x4E9B DUP8 DUP7 DUP7 PUSH2 0x4F04 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4EAA DUP8 DUP10 DUP7 PUSH2 0x4F67 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x4ECB JUMPI DUP1 PUSH2 0x4ECD JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4EE4 JUMP JUMPDEST PUSH2 0x4EE1 DUP6 DUP6 DUP5 PUSH2 0x4F67 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4EFC DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4FA4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4F24 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4F47 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST SWAP1 POP PUSH2 0x4EE4 PUSH2 0x4F62 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x5064 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4F87 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x4EFC PUSH2 0x4F62 DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4FC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH2 0x4FCF DUP6 PUSH2 0x507A JUMP JUMPDEST PUSH2 0x4FEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5963 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x5007 SWAP2 SWAP1 PUSH2 0x5755 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5044 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5049 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x5059 DUP3 DUP3 DUP7 PUSH2 0x5080 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x508F JUMPI POP DUP2 PUSH2 0x12FF JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x509F JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x580F JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x50D7 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x513A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5126 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x17CB DUP2 PUSH2 0x5DF9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x17CB DUP2 PUSH2 0x5E1C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x17CB DUP2 PUSH2 0x5E1C JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x17CB DUP2 PUSH2 0x5E3B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x17CB DUP2 PUSH2 0x5E3B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x519D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x12FF DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x12FF DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x51D6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x51E1 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x51F1 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5210 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x521B DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x522B DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x524E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5259 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x51F1 DUP2 PUSH2 0x5E0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x527B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5286 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52A6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x52BD JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x52D0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x52DC JUMPI INVALID JUMPDEST PUSH2 0x52E9 DUP5 DUP6 DUP4 MUL ADD PUSH2 0x5DA9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD PUSH1 0x80 DUP1 DUP6 MUL DUP8 ADD DUP9 ADD DUP12 LT ISZERO PUSH2 0x5307 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x539C JUMPI DUP1 DUP3 DUP13 SUB SLT ISZERO PUSH2 0x5321 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 ADD DUP2 DUP2 LT DUP10 DUP3 GT OR ISZERO PUSH2 0x5336 JUMPI INVALID JUMPDEST DUP3 MSTORE DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x534E JUMPI DUP12 DUP13 REVERT JUMPDEST DUP2 MSTORE DUP4 DUP11 ADD CALLDATALOAD PUSH2 0x535D DUP2 PUSH2 0x5E1C JUMP JUMPDEST DUP2 DUP12 ADD MSTORE PUSH2 0x536C DUP5 DUP4 ADD PUSH2 0x5149 JUMP JUMPDEST DUP3 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 POP PUSH2 0x537F DUP3 DUP6 ADD PUSH2 0x5176 JUMP JUMPDEST SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP8 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0x530B JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x12FF DUP2 PUSH2 0x5E0E JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53D8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53EF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x540C JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH2 0x5441 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53D8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5498 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH2 0x54C3 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54EF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x54F8 DUP5 PUSH2 0x515F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5520 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x12FF DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5545 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5550 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5561 DUP2 PUSH2 0x5E1C JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP PUSH2 0x5572 DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0x60 DUP10 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x5583 DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x5594 DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x55AA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x55BB DUP2 PUSH2 0x5E0E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55DC JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55F4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5610 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH2 0x5620 PUSH1 0x20 DUP7 ADD PUSH2 0x515F JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5648 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x180 DUP14 DUP16 SUB SLT ISZERO PUSH2 0x567B JUMPI DUP6 DUP7 REVERT JUMPDEST DUP13 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5696 JUMPI DUP7 DUP8 REVERT JUMPDEST SWAP12 POP PUSH2 0x56A4 PUSH1 0x20 DUP15 ADD PUSH2 0x513E JUMP JUMPDEST SWAP11 POP PUSH2 0x56B2 PUSH1 0x40 DUP15 ADD PUSH2 0x513E JUMP JUMPDEST SWAP10 POP PUSH2 0x56C0 PUSH1 0x60 DUP15 ADD PUSH2 0x513E JUMP JUMPDEST SWAP9 POP PUSH2 0x56CE PUSH1 0x80 DUP15 ADD PUSH2 0x5181 JUMP JUMPDEST SWAP8 POP PUSH2 0x56DC PUSH1 0xA0 DUP15 ADD PUSH2 0x5154 JUMP JUMPDEST SWAP7 POP PUSH2 0x56EA PUSH1 0xC0 DUP15 ADD PUSH2 0x5154 JUMP JUMPDEST SWAP6 POP PUSH2 0x56F8 PUSH1 0xE0 DUP15 ADD PUSH2 0x515F JUMP JUMPDEST SWAP5 POP PUSH2 0x100 DUP14 ADD MLOAD SWAP4 POP PUSH2 0x120 DUP14 ADD MLOAD SWAP3 POP PUSH2 0x5717 PUSH2 0x140 DUP15 ADD PUSH2 0x515F JUMP JUMPDEST SWAP2 POP PUSH2 0x5726 PUSH2 0x160 DUP15 ADD PUSH2 0x515F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5767 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5DCD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0xFFFFFF SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x582E DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5DCD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x52333 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523133 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x291919 PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523233 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523235 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523139 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x29189B PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x148D PUSH1 0xF2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x148C4D PUSH1 0xEA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523131 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x5235 PUSH1 0xF0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523231 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x52313 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1 SWAP1 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523135 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0xA4627 PUSH1 0xEB SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x148C8D PUSH1 0xEA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x29191B PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0xA4647 PUSH1 0xEB SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523239 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0xA47 PUSH1 0xF3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523137 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x291899 PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x52323 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523237 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x291B PUSH1 0xF1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP DUP3 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP5 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD DUP3 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP5 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP3 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP5 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 ADD SWAP1 POP PUSH2 0x5C75 DUP3 DUP5 MLOAD PUSH2 0x5738 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5C87 PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x5738 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x5C9A PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x574C JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5CAD PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x5745 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x5CC0 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x5745 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD MLOAD DUP2 DUP5 ADD MSTORE POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x5CFE DUP3 DUP6 ADD DUP3 PUSH2 0x5738 JUMP JUMPDEST POP POP PUSH2 0x140 SWAP3 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x2 SWAP3 DUP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SIGNEXTEND PUSH1 0x40 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5DC5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5DE8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DD0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3F71 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 PUSH16 0xB29AF291438B541627E21439B7CAD869 DUP13 0xB0 LOG4 0xAD 0xE2 PUSH31 0xE568CA5D67D489964736F6C63430007060033000000000000000000000000 ", + "sourceMap": "16989:35015:0:-:0;;;17946:24;;;-1:-1:-1;;17946:24:0;;;;;17977:1108;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18190:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;18213:17:0;;;;:7;;:17;;;;;:::i;:::-;;18258:7;-1:-1:-1;;;;;18248:17:0;:7;-1:-1:-1;;;;;18248:17:0;;18240:32;;;;-1:-1:-1;;;18240:32:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;18307:16:0;;;;;;;;18333;;;;;;-1:-1:-1;;;;;;18359:20:0;;;;;;;18394:9;18389:661;18413:15;:22;18409:1;:26;18389:661;;;18492:1;18464:15;18480:1;18464:18;;;;;;;;;;;;;;:25;;;:29;;;18456:45;;;;-1:-1:-1;;;18456:45:0;;;;;;;:::i;:::-;18548:15;18564:1;18548:18;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;18548:31:0;18578:1;18548:31;18540:47;;;;-1:-1:-1;;;18540:47:0;;;;;;;:::i;:::-;18629:5;;18625:143;;18694:15;18714:1;18710;:5;18694:22;;;;;;;;;;;;;;:32;;;18662:64;;:15;18678:1;18662:18;;;;;;;;;;;;;;:28;;;:64;;;;18654:80;;;;-1:-1:-1;;;18654:80:0;;;;;;;:::i;:::-;18781:14;18818:207;;;;;;;;18856:1;-1:-1:-1;;;;;18818:207:0;;;;;18882:15;18898:1;18882:18;;;;;;;;;;;;;;:28;;;18818:207;;;;;;18935:15;18951:1;18935:18;;;;;;;;;;;;;;:28;;;18818:207;;;;;;18985:15;19001:1;18985:18;;;;;;;;;;;;;;;;;;;:25;;;;;18818:207;;;;;;;18781:258;;;;;;;;-1:-1:-1;18781:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18781:258:0;;;-1:-1:-1;;;;;18781:258:0;;;;;;;-1:-1:-1;;;;18781:258:0;-1:-1:-1;;;18781:258:0;;;;;;;;-1:-1:-1;;;;18781:258:0;-1:-1:-1;;;18781:258:0;;;;;;;;;;;-1:-1:-1;;;;;18781:258:0;-1:-1:-1;;;18781:258:0;;;;;;;;18437:3;18389:661;;;-1:-1:-1;;19059:6:0;:19;;-1:-1:-1;;;;;;19059:19:0;19068:10;19059:19;;;-1:-1:-1;16989:35015:0;;-1:-1:-1;;;;16989:35015:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16989:35015:0;;;-1:-1:-1;16989:35015:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:179:1;95:13;;-1:-1:-1;;;;;137:31:1;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:166::-;277:13;;330:1;319:20;;;309:31;;299:2;;354:1;351;344:12;369:711;;478:3;471:4;463:6;459:17;455:27;445:2;;500:5;493;486:20;445:2;527:13;;-1:-1:-1;;;;;552:26:1;;549:2;;;581:9;549:2;611:4;639:52;681:2;662:13;;-1:-1:-1;;658:27:1;654:36;;639:52;:::i;:::-;716:2;707:7;700:19;760:3;755:2;750;742:6;738:15;734:24;731:33;728:2;;;781:5;774;767:20;728:2;807:5;821:134;835:2;832:1;829:9;821:134;;;924:14;;;920:23;;914:30;892:15;;;888:24;;881:64;846:10;;821:134;;;973:2;970:1;967:9;964:2;;;1033:5;1028:2;1023;1014:7;1010:16;1006:25;999:40;964:2;-1:-1:-1;1067:7:1;435:645;-1:-1:-1;;;;;435:645:1:o;1085:167::-;1165:13;;1218:8;1207:20;;1197:31;;1187:2;;1242:1;1239;1232:12;1257:2345;;;;;;;1541:3;1529:9;1520:7;1516:23;1512:33;1509:2;;;1563:6;1555;1548:22;1509:2;1595:16;;-1:-1:-1;;;;;1660:14:1;;;1657:2;;;1692:6;1684;1677:22;1657:2;1720:63;1775:7;1766:6;1755:9;1751:22;1720:63;:::i;:::-;1710:73;;1829:2;1818:9;1814:18;1808:25;1792:41;;1858:2;1848:8;1845:16;1842:2;;;1879:6;1871;1864:22;1842:2;1907:65;1964:7;1953:8;1942:9;1938:24;1907:65;:::i;:::-;1897:75;;1991:51;2038:2;2027:9;2023:18;1991:51;:::i;:::-;1981:61;;2061:51;2108:2;2097:9;2093:18;2061:51;:::i;:::-;2051:61;;2131:51;2177:3;2166:9;2162:19;2131:51;:::i;:::-;2121:61;;2228:3;2217:9;2213:19;2207:26;2191:42;;2258:2;2248:8;2245:16;2242:2;;;2279:6;2271;2264:22;2242:2;2322:8;2311:9;2307:24;2297:34;;2369:7;2362:4;2358:2;2354:13;2350:27;2340:2;;2396:6;2388;2381:22;2340:2;2430;2424:9;2452:2;2448;2445:10;2442:2;;;2458:9;2442:2;2489:36;2521:2;2516;2512;2508:11;2504:20;2489:36;:::i;:::-;2547:3;2571:2;2566:3;2559:15;2599:2;2594:3;2590:12;2583:19;;2630:2;2626;2622:11;2680:7;2675:2;2668:3;2664:2;2660:12;2656:2;2652:21;2648:30;2645:43;2642:2;;;2706:6;2698;2691:22;2642:2;2733:6;2724:15;;2748:824;2762:2;2759:1;2756:9;2748:824;;;2833:3;2827;2818:7;2814:17;2810:27;2807:2;;;2855:6;2847;2840:22;2807:2;2897;2891:9;2943:3;2935:6;2931:16;3001:6;2989:10;2986:22;2981:2;2969:10;2966:18;2963:46;2960:2;;;3012:9;2960:2;3043;3036:22;3084:10;;-1:-1:-1;;;;;3127:31:1;;3117:42;;3107:2;;3178:6;3170;3163:22;3107:2;3200:21;;3258:43;3297:2;3288:12;;3258:43;:::i;:::-;3253:2;3245:6;3241:15;3234:68;3339:43;3378:2;3373:3;3369:12;3339:43;:::i;:::-;3334:2;3326:6;3322:15;3315:68;3420:44;3460:2;3455:3;3451:12;3420:44;:::i;:::-;3415:2;3403:15;;3396:69;3478:19;;2780:1;2773:9;;;;;3526:2;3517:12;;;;3558:3;3549:13;2748:824;;;2752:3;3591:5;3581:15;;;;;;;1499:2103;;;;;;;;:::o;3607:325::-;3809:2;3791:21;;;3848:1;3828:18;;;3821:29;-1:-1:-1;;;3881:2:1;3866:18;;3859:32;3923:2;3908:18;;3781:151::o;3937:326::-;4139:2;4121:21;;;4178:1;4158:18;;;4151:29;-1:-1:-1;;;4211:2:1;4196:18;;4189:33;4254:2;4239:18;;4111:152::o;4268:326::-;4470:2;4452:21;;;4509:1;4489:18;;;4482:29;-1:-1:-1;;;4542:2:1;4527:18;;4520:33;4585:2;4570:18;;4442:152::o;4599:326::-;4801:2;4783:21;;;4840:1;4820:18;;;4813:29;-1:-1:-1;;;4873:2:1;4858:18;;4851:33;4916:2;4901:18;;4773:152::o;4930:242::-;5000:2;4994:9;5030:17;;;-1:-1:-1;;;;;5062:34:1;;5098:22;;;5059:62;5056:2;;;5124:9;5056:2;5151;5144:22;4974:198;;-1:-1:-1;4974:198:1:o;:::-;16989:35015:0;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [ + { + "ast": { + "nodeType": "YulBlock", + "src": "0:29470:1", + "statements": [ + { + "nodeType": "YulBlock", + "src": "6:3:1", + "statements": [] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "76:80:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "86:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "101:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "95:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "95:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "86:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "144:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "117:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "117:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "117:33:1" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "55:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "66:5:1", + "type": "" + } + ], + "src": "14:142:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "210:85:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "220:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "242:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "229:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "229:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "220:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "283:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_int24", + "nodeType": "YulIdentifier", + "src": "258:24:1" + }, + "nodeType": "YulFunctionCall", + "src": "258:31:1" + }, + "nodeType": "YulExpressionStatement", + "src": "258:31:1" + } + ] + }, + "name": "abi_decode_t_int24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "189:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "200:5:1", + "type": "" + } + ], + "src": "161:134:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "360:78:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "370:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "385:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "379:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "379:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "370:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "426:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_int24", + "nodeType": "YulIdentifier", + "src": "401:24:1" + }, + "nodeType": "YulFunctionCall", + "src": "401:31:1" + }, + "nodeType": "YulExpressionStatement", + "src": "401:31:1" + } + ] + }, + "name": "abi_decode_t_int24_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "339:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "350:5:1", + "type": "" + } + ], + "src": "300:138:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "505:132:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "515:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "530:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "524:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "524:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "515:5:1" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "615:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "624:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "627:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "617:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "617:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "617:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "559:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "570:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "577:34:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "566:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "566:46:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "556:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "556:57:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "549:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "549:65:1" + }, + "nodeType": "YulIf", + "src": "546:2:1" + } + ] + }, + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "484:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "495:5:1", + "type": "" + } + ], + "src": "443:194:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "692:86:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "702:29:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "724:6:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "711:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "711:20:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "702:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "766:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint24", + "nodeType": "YulIdentifier", + "src": "740:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "740:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "740:32:1" + } + ] + }, + "name": "abi_decode_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "671:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "682:5:1", + "type": "" + } + ], + "src": "642:136:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "844:79:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "854:22:1", + "value": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "869:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "863:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "863:13:1" + }, + "variableNames": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "854:5:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "911:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint24", + "nodeType": "YulIdentifier", + "src": "885:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "885:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "885:32:1" + } + ] + }, + "name": "abi_decode_t_uint24_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "823:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "834:5:1", + "type": "" + } + ], + "src": "783:140:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "998:189:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1044:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1053:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1061:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1046:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1046:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1046:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1019:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1028:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1015:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1015:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1040:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1011:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1011:32:1" + }, + "nodeType": "YulIf", + "src": "1008:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1079:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1105:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1092:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "1092:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1083:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1151:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "1124:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "1124:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1124:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "1166:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1176:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1166:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "964:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "975:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "987:6:1", + "type": "" + } + ], + "src": "928:259:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1273:182:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1319:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1328:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1336:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1321:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1321:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1321:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1294:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1303:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1290:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1290:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1315:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1286:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1286:32:1" + }, + "nodeType": "YulIf", + "src": "1283:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1354:29:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1373:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "1367:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "1367:16:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1358:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1419:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "1392:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "1392:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1392:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "1434:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1444:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1434:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1239:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1250:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1262:6:1", + "type": "" + } + ], + "src": "1192:263:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1547:315:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "1593:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1602:6:1" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1610:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "1595:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "1595:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1595:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1568:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1577:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1564:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1564:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1589:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1560:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1560:32:1" + }, + "nodeType": "YulIf", + "src": "1557:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1628:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1654:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1641:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "1641:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "1632:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1700:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "1673:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "1673:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1673:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "1715:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "1725:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "1715:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "1739:47:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "1771:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "1782:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "1767:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1767:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "1754:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "1754:32:1" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "1743:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "1822:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "1795:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "1795:35:1" + }, + "nodeType": "YulExpressionStatement", + "src": "1795:35:1" + }, + { + "nodeType": "YulAssignment", + "src": "1839:17:1", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "1849:7:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "1839:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1505:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1516:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1528:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1536:6:1", + "type": "" + } + ], + "src": "1460:402:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "1971:366:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2017:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2026:6:1" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2034:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2019:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2019:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2019:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "1992:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2001:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "1988:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1988:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2013:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "1984:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "1984:32:1" + }, + "nodeType": "YulIf", + "src": "1981:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2052:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2078:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2065:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "2065:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2056:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2124:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "2097:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "2097:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2097:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "2139:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2149:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2139:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2163:47:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2195:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2206:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2191:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2191:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2178:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "2178:32:1" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "2167:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "2246:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "2219:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "2219:35:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2219:35:1" + }, + { + "nodeType": "YulAssignment", + "src": "2263:17:1", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "2273:7:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2263:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "2289:42:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2316:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2327:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2312:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2312:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2299:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "2299:32:1" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "2289:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "1921:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "1932:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "1944:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "1952:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "1960:6:1", + "type": "" + } + ], + "src": "1867:470:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2426:312:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2472:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2481:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2489:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2474:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2474:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2474:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2447:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2456:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2443:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2443:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2468:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2439:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2439:32:1" + }, + "nodeType": "YulIf", + "src": "2436:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2507:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2533:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2520:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "2520:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2511:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2579:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "2552:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "2552:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2552:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "2594:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2604:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2594:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2618:47:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2650:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2661:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "2646:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2646:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2633:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "2633:32:1" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "2622:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "2698:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "2674:23:1" + }, + "nodeType": "YulFunctionCall", + "src": "2674:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2674:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "2715:17:1", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "2725:7:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "2715:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2384:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2395:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2407:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2415:6:1", + "type": "" + } + ], + "src": "2342:396:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "2830:240:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "2876:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2885:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2893:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "2878:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "2878:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2878:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "2851:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2860:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "2847:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2847:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "2872:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "2843:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "2843:32:1" + }, + "nodeType": "YulIf", + "src": "2840:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "2911:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "2937:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "2924:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "2924:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "2915:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "2983:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "2956:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "2956:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "2956:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "2998:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "3008:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "2998:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "3022:42:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3049:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3060:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3045:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3045:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3032:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "3032:32:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "3022:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "2788:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "2799:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "2811:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "2819:6:1", + "type": "" + } + ], + "src": "2743:327:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3202:1666:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "3212:12:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3222:2:1", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "3216:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3269:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3278:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3286:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3271:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3271:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3271:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3244:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3253:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3240:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3240:23:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3265:2:1" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3236:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3236:32:1" + }, + "nodeType": "YulIf", + "src": "3233:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3304:37:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3331:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3318:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "3318:23:1" + }, + "variables": [ + { + "name": "offset", + "nodeType": "YulTypedName", + "src": "3308:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3350:28:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3360:18:1", + "type": "", + "value": "0xffffffffffffffff" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "3354:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3405:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3414:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3422:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3407:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3407:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3407:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3393:6:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3401:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3390:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "3390:14:1" + }, + "nodeType": "YulIf", + "src": "3387:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3440:32:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "3454:9:1" + }, + { + "name": "offset", + "nodeType": "YulIdentifier", + "src": "3465:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3450:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3450:22:1" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "3444:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3520:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3529:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3537:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3522:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3522:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3522:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3499:2:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3503:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3495:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3495:13:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3510:7:1" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3491:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3491:27:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "3484:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3484:35:1" + }, + "nodeType": "YulIf", + "src": "3481:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3555:26:1", + "value": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3578:2:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "3565:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "3565:16:1" + }, + "variables": [ + { + "name": "_4", + "nodeType": "YulTypedName", + "src": "3559:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3604:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "3606:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "3606:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3606:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3596:2:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "3600:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3593:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "3593:10:1" + }, + "nodeType": "YulIf", + "src": "3590:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3626:47:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3660:2:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3664:2:1" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3656:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3656:11:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3669:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3652:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3652:20:1" + } + ], + "functionName": { + "name": "allocateMemory", + "nodeType": "YulIdentifier", + "src": "3637:14:1" + }, + "nodeType": "YulFunctionCall", + "src": "3637:36:1" + }, + "variables": [ + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "3630:3:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3682:16:1", + "value": { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3695:3:1" + }, + "variables": [ + { + "name": "dst_1", + "nodeType": "YulTypedName", + "src": "3686:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3714:3:1" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3719:2:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "3707:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3707:15:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3707:15:1" + }, + { + "nodeType": "YulAssignment", + "src": "3731:19:1", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3742:3:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3747:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3738:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3738:12:1" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "3731:3:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3759:22:1", + "value": { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3774:2:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3778:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3770:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3770:11:1" + }, + "variables": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "3763:3:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3790:14:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3800:4:1", + "type": "", + "value": "0x80" + }, + "variables": [ + { + "name": "_5", + "nodeType": "YulTypedName", + "src": "3794:2:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3859:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3868:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3876:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "3861:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "3861:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "3861:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "3827:2:1" + }, + { + "arguments": [ + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3835:2:1" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "3839:2:1" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "3831:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3831:11:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3823:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3823:20:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "3845:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3819:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3819:29:1" + }, + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3850:7:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "3816:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "3816:42:1" + }, + "nodeType": "YulIf", + "src": "3813:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "3894:15:1", + "value": { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "3903:6:1" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "3898:1:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "3963:875:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4007:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4016:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4024:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4009:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4009:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4009:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "3988:7:1" + }, + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "3997:3:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "3984:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3984:17:1" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "4003:2:1" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "3980:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3980:26:1" + }, + "nodeType": "YulIf", + "src": "3977:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4046:12:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4056:2:1", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "_6", + "nodeType": "YulTypedName", + "src": "4050:2:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4071:23:1", + "value": { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "4091:2:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "4085:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "4085:9:1" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "4075:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4107:33:1", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4129:6:1" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "4137:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4125:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4125:15:1" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "4111:10:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4203:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "4205:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "4205:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4205:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "4162:10:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "4174:2:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "4159:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "4159:18:1" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "4182:10:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4194:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "4179:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "4179:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "4156:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "4156:46:1" + }, + "nodeType": "YulIf", + "src": "4153:2:1" + }, + { + "expression": { + "arguments": [ + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "4236:2:1" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "4240:10:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4229:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4229:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4229:22:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4264:30:1", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4290:3:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4277:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "4277:17:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "4268:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4361:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4370:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4378:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4363:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4363:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4363:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4320:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4331:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4346:3:1", + "type": "", + "value": "184" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4351:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "4342:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4342:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4355:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4338:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4338:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "4327:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4327:31:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "4317:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "4317:42:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "4310:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4310:50:1" + }, + "nodeType": "YulIf", + "src": "4307:2:1" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4407:6:1" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "4415:5:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4400:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4400:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4400:21:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4434:41:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4466:3:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4471:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4462:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4462:12:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "4449:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "4449:26:1" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "4438:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "4513:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_int24", + "nodeType": "YulIdentifier", + "src": "4488:24:1" + }, + "nodeType": "YulFunctionCall", + "src": "4488:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4488:33:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4545:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4553:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4541:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4541:15:1" + }, + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "4558:7:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4534:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4534:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4534:32:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4590:6:1" + }, + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "4598:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4586:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4586:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4626:3:1" + }, + { + "name": "_6", + "nodeType": "YulIdentifier", + "src": "4631:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4622:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4622:12:1" + } + ], + "functionName": { + "name": "abi_decode_t_int24", + "nodeType": "YulIdentifier", + "src": "4603:18:1" + }, + "nodeType": "YulFunctionCall", + "src": "4603:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4579:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4579:57:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4579:57:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "4649:12:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4659:2:1", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "_7", + "nodeType": "YulTypedName", + "src": "4653:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4685:6:1" + }, + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "4693:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4681:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4681:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4722:3:1" + }, + { + "name": "_7", + "nodeType": "YulIdentifier", + "src": "4727:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4718:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4718:12:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint24", + "nodeType": "YulIdentifier", + "src": "4698:19:1" + }, + "nodeType": "YulFunctionCall", + "src": "4698:33:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4674:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4674:58:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4674:58:1" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4752:3:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "4757:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "4745:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4745:19:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4745:19:1" + }, + { + "nodeType": "YulAssignment", + "src": "4777:19:1", + "value": { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4788:3:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "4793:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4784:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4784:12:1" + }, + "variableNames": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "4777:3:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "4809:19:1", + "value": { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4820:3:1" + }, + { + "name": "_5", + "nodeType": "YulIdentifier", + "src": "4825:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "4816:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4816:12:1" + }, + "variableNames": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "4809:3:1" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3929:1:1" + }, + { + "name": "_4", + "nodeType": "YulIdentifier", + "src": "3932:2:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "3926:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "3926:9:1" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "3936:18:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "3938:14:1", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3947:1:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "3950:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "3943:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "3943:9:1" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "3938:1:1" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "3922:3:1", + "statements": [] + }, + "src": "3918:920:1" + }, + { + "nodeType": "YulAssignment", + "src": "4847:15:1", + "value": { + "name": "dst_1", + "nodeType": "YulIdentifier", + "src": "4857:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "4847:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "3168:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "3179:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "3191:6:1", + "type": "" + } + ], + "src": "3075:1793:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "4951:179:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "4997:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5006:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5014:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "4999:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "4999:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "4999:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "4972:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "4981:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "4968:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4968:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "4993:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "4964:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "4964:32:1" + }, + "nodeType": "YulIf", + "src": "4961:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5032:29:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5051:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5045:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "5045:16:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5036:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5094:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "5070:23:1" + }, + "nodeType": "YulFunctionCall", + "src": "5070:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5070:30:1" + }, + { + "nodeType": "YulAssignment", + "src": "5109:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "5119:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5109:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "4917:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "4928:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "4940:6:1", + "type": "" + } + ], + "src": "4873:257:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5240:107:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5287:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5296:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5304:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5289:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5289:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5289:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5261:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5270:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5257:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5257:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5282:3:1", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5253:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5253:33:1" + }, + "nodeType": "YulIf", + "src": "5250:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "5322:19:1", + "value": { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5332:9:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5322:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_CellarAddParams_$1277_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5206:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5217:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5229:6:1", + "type": "" + } + ], + "src": "5135:212:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5455:749:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "5502:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5511:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "5519:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5504:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5504:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5504:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "5476:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5485:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "5472:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5472:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5497:3:1", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "5468:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5468:33:1" + }, + "nodeType": "YulIf", + "src": "5465:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5537:23:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5557:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5551:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "5551:9:1" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "5541:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5569:34:1", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5591:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5599:3:1", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5587:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5587:16:1" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "5573:10:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "5678:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "5680:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "5680:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5680:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "5621:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5633:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "5618:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5618:34:1" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "5657:10:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5669:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "5654:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5654:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "5615:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "5615:62:1" + }, + "nodeType": "YulIf", + "src": "5612:2:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5707:2:1", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "5711:10:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5700:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5700:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5700:22:1" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5738:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5759:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5746:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "5746:23:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5731:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5731:39:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5731:39:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5790:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5798:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5786:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5786:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5820:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5831:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5816:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5816:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5803:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "5803:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5779:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5779:57:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5779:57:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5856:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5864:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5852:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5852:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5886:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5897:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5882:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5882:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5869:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "5869:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5845:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5845:57:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5845:57:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "5922:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5930:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5918:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5918:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "5952:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5963:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5948:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "5948:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5935:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "5935:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "5911:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "5911:57:1" + }, + "nodeType": "YulExpressionStatement", + "src": "5911:57:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "5977:46:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6007:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6018:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6003:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6003:19:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "5990:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "5990:33:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "5981:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6059:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "6032:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "6032:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6032:33:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6085:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6093:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6081:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6081:16:1" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "6099:5:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6074:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6074:31:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6074:31:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6125:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6133:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6121:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6121:16:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6156:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6167:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6152:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6152:19:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6139:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "6139:33:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6114:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6114:59:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6114:59:1" + }, + { + "nodeType": "YulAssignment", + "src": "6182:16:1", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6192:6:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6182:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_CellarAddParams_$1277_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "5421:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "5432:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "5444:6:1", + "type": "" + } + ], + "src": "5352:852:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6317:107:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6364:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6373:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6381:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6366:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6366:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6366:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6338:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6347:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6334:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6334:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6359:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6330:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6330:33:1" + }, + "nodeType": "YulIf", + "src": "6327:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "6399:19:1", + "value": { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6409:9:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6399:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6283:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6294:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6306:6:1", + "type": "" + } + ], + "src": "6209:215:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6535:681:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "6582:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6591:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "6599:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "6584:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6584:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6584:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "6556:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6565:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "6552:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6552:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6577:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "6548:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6548:33:1" + }, + "nodeType": "YulIf", + "src": "6545:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6617:23:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6637:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "6631:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "6631:9:1" + }, + "variables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "6621:6:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6649:34:1", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6671:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6679:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6667:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6667:16:1" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "6653:10:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "6758:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "6760:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "6760:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6760:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "6701:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6713:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "6698:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "6698:34:1" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "6737:10:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6749:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "6734:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "6734:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "6695:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "6695:62:1" + }, + "nodeType": "YulIf", + "src": "6692:2:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6787:2:1", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "6791:10:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6780:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6780:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6780:22:1" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6818:6:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6839:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6826:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "6826:23:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6811:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6811:39:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6811:39:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6870:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6878:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6866:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6866:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6900:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6911:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6896:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6896:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6883:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "6883:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6859:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6859:57:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6859:57:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "6936:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6944:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6932:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6932:15:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "6966:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "6977:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "6962:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "6962:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "6949:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "6949:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "6925:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "6925:57:1" + }, + "nodeType": "YulExpressionStatement", + "src": "6925:57:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "6991:45:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7021:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7032:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7017:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7017:18:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7004:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "7004:32:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "6995:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7072:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "7045:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "7045:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7045:33:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7098:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7106:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7094:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7094:15:1" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7111:5:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7087:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "7087:30:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7087:30:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7137:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7145:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7133:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7133:16:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7168:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7179:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7164:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7164:19:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7151:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "7151:33:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "7126:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "7126:59:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7126:59:1" + }, + { + "nodeType": "YulAssignment", + "src": "7194:16:1", + "value": { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "7204:6:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7194:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_struct$_CellarRemoveParams_$1288_memory_ptr", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "6501:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "6512:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "6524:6:1", + "type": "" + } + ], + "src": "6429:787:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7336:227:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7382:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7391:6:1" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7399:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7384:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "7384:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7384:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7357:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7366:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7353:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7353:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7378:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7349:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7349:32:1" + }, + "nodeType": "YulIf", + "src": "7346:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "7417:52:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7459:9:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "7427:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "7427:42:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7417:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7478:35:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7498:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7509:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7494:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7494:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7488:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "7488:25:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "7478:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7522:35:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7542:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7553:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7538:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7538:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7532:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "7532:25:1" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "7522:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint128t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7286:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7297:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7309:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7317:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7325:6:1", + "type": "" + } + ], + "src": "7221:342:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "7637:188:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "7683:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7692:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7700:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7685:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "7685:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7685:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "7658:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7667:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7654:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7654:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7679:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "7650:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "7650:32:1" + }, + "nodeType": "YulIf", + "src": "7647:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "7718:36:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "7744:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "7731:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "7731:23:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "7722:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7789:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "7763:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "7763:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "7763:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "7804:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "7814:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "7804:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7603:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7614:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7626:6:1", + "type": "" + } + ], + "src": "7568:257:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8003:926:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "8050:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "8059:6:1" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "8067:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8052:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8052:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8052:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "8024:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8033:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8020:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8020:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8045:3:1", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "8016:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8016:33:1" + }, + "nodeType": "YulIf", + "src": "8013:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8085:29:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8104:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8098:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8098:16:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "8089:5:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8150:5:1" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nodeType": "YulIdentifier", + "src": "8123:26:1" + }, + "nodeType": "YulFunctionCall", + "src": "8123:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8123:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "8165:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "8175:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "8165:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8189:40:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8214:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8225:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8210:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8210:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8204:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8204:25:1" + }, + "variables": [ + { + "name": "value_1", + "nodeType": "YulTypedName", + "src": "8193:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "8263:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_int24", + "nodeType": "YulIdentifier", + "src": "8238:24:1" + }, + "nodeType": "YulFunctionCall", + "src": "8238:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8238:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "8280:17:1", + "value": { + "name": "value_1", + "nodeType": "YulIdentifier", + "src": "8290:7:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "8280:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8306:40:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8331:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8342:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8327:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8327:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8321:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8321:25:1" + }, + "variables": [ + { + "name": "value_2", + "nodeType": "YulTypedName", + "src": "8310:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nodeType": "YulIdentifier", + "src": "8381:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "8355:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "8355:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8355:34:1" + }, + { + "nodeType": "YulAssignment", + "src": "8398:17:1", + "value": { + "name": "value_2", + "nodeType": "YulIdentifier", + "src": "8408:7:1" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "8398:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8424:40:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8449:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8460:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8445:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8445:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8439:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8439:25:1" + }, + "variables": [ + { + "name": "value_3", + "nodeType": "YulTypedName", + "src": "8428:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_3", + "nodeType": "YulIdentifier", + "src": "8499:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "8473:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "8473:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8473:34:1" + }, + { + "nodeType": "YulAssignment", + "src": "8516:17:1", + "value": { + "name": "value_3", + "nodeType": "YulIdentifier", + "src": "8526:7:1" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "8516:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8542:41:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8567:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8578:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8563:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8563:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8557:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8557:26:1" + }, + "variables": [ + { + "name": "value_4", + "nodeType": "YulTypedName", + "src": "8546:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_4", + "nodeType": "YulIdentifier", + "src": "8618:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_uint16", + "nodeType": "YulIdentifier", + "src": "8592:25:1" + }, + "nodeType": "YulFunctionCall", + "src": "8592:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8592:34:1" + }, + { + "nodeType": "YulAssignment", + "src": "8635:17:1", + "value": { + "name": "value_4", + "nodeType": "YulIdentifier", + "src": "8645:7:1" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "8635:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8661:41:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8686:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8697:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8682:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8682:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8676:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8676:26:1" + }, + "variables": [ + { + "name": "value_5", + "nodeType": "YulTypedName", + "src": "8665:7:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "8754:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "8763:6:1" + }, + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "8771:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "8756:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8756:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8756:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value_5", + "nodeType": "YulIdentifier", + "src": "8724:7:1" + }, + { + "arguments": [ + { + "name": "value_5", + "nodeType": "YulIdentifier", + "src": "8737:7:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8746:4:1", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "8733:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8733:18:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "8721:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "8721:31:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "8714:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "8714:39:1" + }, + "nodeType": "YulIf", + "src": "8711:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "8789:17:1", + "value": { + "name": "value_5", + "nodeType": "YulIdentifier", + "src": "8799:7:1" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "8789:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "8815:41:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "8840:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8851:3:1", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8836:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "8836:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "8830:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "8830:26:1" + }, + "variables": [ + { + "name": "value_6", + "nodeType": "YulTypedName", + "src": "8819:7:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_6", + "nodeType": "YulIdentifier", + "src": "8889:7:1" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nodeType": "YulIdentifier", + "src": "8865:23:1" + }, + "nodeType": "YulFunctionCall", + "src": "8865:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "8865:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "8906:17:1", + "value": { + "name": "value_6", + "nodeType": "YulIdentifier", + "src": "8916:7:1" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "8906:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "7921:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "7932:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "7944:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "7952:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "7960:6:1", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "7968:6:1", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "7976:6:1", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "7984:6:1", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "7992:6:1", + "type": "" + } + ], + "src": "7830:1099:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9004:120:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9050:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9059:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9067:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9052:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "9052:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9052:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9025:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9034:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9021:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9021:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9046:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9017:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9017:32:1" + }, + "nodeType": "YulIf", + "src": "9014:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "9085:33:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9108:9:1" + } + ], + "functionName": { + "name": "calldataload", + "nodeType": "YulIdentifier", + "src": "9095:12:1" + }, + "nodeType": "YulFunctionCall", + "src": "9095:23:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9085:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "8970:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "8981:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "8993:6:1", + "type": "" + } + ], + "src": "8934:190:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9210:113:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9256:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9265:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9273:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9258:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "9258:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9258:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9231:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9240:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9227:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9227:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9252:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9223:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9223:32:1" + }, + "nodeType": "YulIf", + "src": "9220:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "9291:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9307:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9301:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9301:16:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9291:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9176:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9187:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9199:6:1", + "type": "" + } + ], + "src": "9129:194:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9460:272:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9507:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9516:6:1" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9524:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9509:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "9509:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9509:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9481:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9490:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9477:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9477:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9502:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9473:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9473:33:1" + }, + "nodeType": "YulIf", + "src": "9470:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "9542:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9558:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9552:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9552:16:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9542:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9577:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9623:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9634:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9619:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9619:18:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "9587:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "9587:51:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9577:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9647:35:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9667:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9678:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9663:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9663:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9657:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9657:25:1" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "9647:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9691:35:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9711:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9722:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9707:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9707:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9701:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9701:25:1" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "9691:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint128t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9402:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9413:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9425:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9433:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "9441:6:1", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "9449:6:1", + "type": "" + } + ], + "src": "9328:404:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "9835:157:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "9881:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9890:6:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9898:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "9883:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "9883:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "9883:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "9856:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9865:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "9852:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9852:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9877:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "9848:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9848:32:1" + }, + "nodeType": "YulIf", + "src": "9845:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "9916:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9932:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9926:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9926:16:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "9916:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "9951:35:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "9971:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "9982:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "9967:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "9967:18:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "9961:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "9961:25:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "9951:6:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "9793:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "9804:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "9816:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "9824:6:1", + "type": "" + } + ], + "src": "9737:255:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10261:960:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "10308:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "10317:6:1" + }, + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "10325:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10310:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10310:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10310:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nodeType": "YulIdentifier", + "src": "10282:7:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10291:9:1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "10278:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10278:23:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10303:3:1", + "type": "", + "value": "384" + } + ], + "functionName": { + "name": "slt", + "nodeType": "YulIdentifier", + "src": "10274:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10274:33:1" + }, + "nodeType": "YulIf", + "src": "10271:2:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "10343:29:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10362:9:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "10356:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "10356:16:1" + }, + "variables": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "10347:5:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "10442:26:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "10451:6:1" + }, + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "10459:6:1" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "10444:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10444:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "10444:22:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10394:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10405:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10412:26:1", + "type": "", + "value": "0xffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "10401:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10401:38:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "10391:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "10391:49:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "10384:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "10384:57:1" + }, + "nodeType": "YulIf", + "src": "10381:2:1" + }, + { + "nodeType": "YulAssignment", + "src": "10477:15:1", + "value": { + "name": "value", + "nodeType": "YulIdentifier", + "src": "10487:5:1" + }, + "variableNames": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "10477:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10501:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10547:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10558:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10543:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10543:18:1" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "10511:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "10511:51:1" + }, + "variableNames": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "10501:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10571:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10617:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10628:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10613:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10613:18:1" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "10581:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "10581:51:1" + }, + "variableNames": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "10571:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10641:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10687:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10698:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10683:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10683:18:1" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nodeType": "YulIdentifier", + "src": "10651:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "10651:51:1" + }, + "variableNames": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "10641:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10711:61:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10756:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10767:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10752:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10752:19:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint24_fromMemory", + "nodeType": "YulIdentifier", + "src": "10721:30:1" + }, + "nodeType": "YulFunctionCall", + "src": "10721:51:1" + }, + "variableNames": [ + { + "name": "value4", + "nodeType": "YulIdentifier", + "src": "10711:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10781:60:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10825:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10836:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10821:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10821:19:1" + } + ], + "functionName": { + "name": "abi_decode_t_int24_fromMemory", + "nodeType": "YulIdentifier", + "src": "10791:29:1" + }, + "nodeType": "YulFunctionCall", + "src": "10791:50:1" + }, + "variableNames": [ + { + "name": "value5", + "nodeType": "YulIdentifier", + "src": "10781:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10850:60:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10894:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10905:3:1", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10890:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10890:19:1" + } + ], + "functionName": { + "name": "abi_decode_t_int24_fromMemory", + "nodeType": "YulIdentifier", + "src": "10860:29:1" + }, + "nodeType": "YulFunctionCall", + "src": "10860:50:1" + }, + "variableNames": [ + { + "name": "value6", + "nodeType": "YulIdentifier", + "src": "10850:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10919:62:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "10965:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "10976:3:1", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "10961:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "10961:19:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "10929:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "10929:52:1" + }, + "variableNames": [ + { + "name": "value7", + "nodeType": "YulIdentifier", + "src": "10919:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "10990:36:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11010:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11021:3:1", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11006:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11006:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11000:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "11000:26:1" + }, + "variableNames": [ + { + "name": "value8", + "nodeType": "YulIdentifier", + "src": "10990:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11035:36:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11055:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11066:3:1", + "type": "", + "value": "288" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11051:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11051:19:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11045:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "11045:26:1" + }, + "variableNames": [ + { + "name": "value9", + "nodeType": "YulIdentifier", + "src": "11035:6:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11080:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11127:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11138:3:1", + "type": "", + "value": "320" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11123:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11123:19:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "11091:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "11091:52:1" + }, + "variableNames": [ + { + "name": "value10", + "nodeType": "YulIdentifier", + "src": "11080:7:1" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "11152:63:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11199:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11210:3:1", + "type": "", + "value": "352" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11195:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11195:19:1" + } + ], + "functionName": { + "name": "abi_decode_t_uint128_fromMemory", + "nodeType": "YulIdentifier", + "src": "11163:31:1" + }, + "nodeType": "YulFunctionCall", + "src": "11163:52:1" + }, + "variableNames": [ + { + "name": "value11", + "nodeType": "YulIdentifier", + "src": "11152:7:1" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint96t_addresst_addresst_addresst_uint24t_int24t_int24t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "10137:9:1", + "type": "" + }, + { + "name": "dataEnd", + "nodeType": "YulTypedName", + "src": "10148:7:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "10160:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "10168:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "10176:6:1", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "10184:6:1", + "type": "" + }, + { + "name": "value4", + "nodeType": "YulTypedName", + "src": "10192:6:1", + "type": "" + }, + { + "name": "value5", + "nodeType": "YulTypedName", + "src": "10200:6:1", + "type": "" + }, + { + "name": "value6", + "nodeType": "YulTypedName", + "src": "10208:6:1", + "type": "" + }, + { + "name": "value7", + "nodeType": "YulTypedName", + "src": "10216:6:1", + "type": "" + }, + { + "name": "value8", + "nodeType": "YulTypedName", + "src": "10224:6:1", + "type": "" + }, + { + "name": "value9", + "nodeType": "YulTypedName", + "src": "10232:6:1", + "type": "" + }, + { + "name": "value10", + "nodeType": "YulTypedName", + "src": "10240:7:1", + "type": "" + }, + { + "name": "value11", + "nodeType": "YulTypedName", + "src": "10249:7:1", + "type": "" + } + ], + "src": "9997:1224:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11272:60:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11289:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11298:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11313:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11318:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "11309:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11309:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11322:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11305:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11305:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11294:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11294:31:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11282:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11282:44:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11282:44:1" + } + ] + }, + "name": "abi_encode_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11256:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11263:3:1", + "type": "" + } + ], + "src": "11226:106:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11381:49:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11398:3:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11414:1:1", + "type": "", + "value": "2" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11417:5:1" + } + ], + "functionName": { + "name": "signextend", + "nodeType": "YulIdentifier", + "src": "11403:10:1" + }, + "nodeType": "YulFunctionCall", + "src": "11403:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11391:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11391:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11391:33:1" + } + ] + }, + "name": "abi_encode_t_int24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11365:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11372:3:1", + "type": "" + } + ], + "src": "11337:93:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11480:49:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11497:3:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "11506:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11513:8:1", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11502:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11502:20:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11490:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11490:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11490:33:1" + } + ] + }, + "name": "abi_encode_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "11464:5:1", + "type": "" + }, + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11471:3:1", + "type": "" + } + ], + "src": "11435:94:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11671:137:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "11681:27:1", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11701:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "11695:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "11695:13:1" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "11685:6:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11743:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11751:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11739:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11739:17:1" + }, + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11758:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11763:6:1" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "11717:21:1" + }, + "nodeType": "YulFunctionCall", + "src": "11717:53:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11717:53:1" + }, + { + "nodeType": "YulAssignment", + "src": "11779:23:1", + "value": { + "arguments": [ + { + "name": "pos", + "nodeType": "YulIdentifier", + "src": "11790:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "11795:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11786:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11786:16:1" + }, + "variableNames": [ + { + "name": "end", + "nodeType": "YulIdentifier", + "src": "11779:3:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nodeType": "YulTypedName", + "src": "11647:3:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11652:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nodeType": "YulTypedName", + "src": "11663:3:1", + "type": "" + } + ], + "src": "11534:274:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "11914:102:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "11924:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11936:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11947:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "11932:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11932:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "11924:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "11966:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "11981:6:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "11997:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12002:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "11993:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11993:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12006:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "11989:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11989:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "11977:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "11977:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "11959:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "11959:51:1" + }, + "nodeType": "YulExpressionStatement", + "src": "11959:51:1" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "11883:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "11894:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "11905:4:1", + "type": "" + } + ], + "src": "11813:203:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12130:102:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12140:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12152:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12163:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12148:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12148:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12140:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12182:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12197:6:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12213:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12218:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "12209:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12209:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12222:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12205:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12205:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12193:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12193:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12175:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12175:51:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12175:51:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12099:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12110:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12121:4:1", + "type": "" + } + ], + "src": "12021:211:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12366:175:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12376:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12388:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12399:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12384:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12384:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12376:4:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "12411:29:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12429:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12434:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "12425:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12425:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12438:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12421:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12421:19:1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "12415:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12456:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12471:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "12479:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12467:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12467:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12449:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12449:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12449:34:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12503:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12514:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12499:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12499:18:1" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "12523:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "12531:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12519:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12519:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12492:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12492:43:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12492:43:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12327:9:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "12338:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12346:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12357:4:1", + "type": "" + } + ], + "src": "12237:304:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "12701:233:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "12711:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12723:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12734:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12719:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12719:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "12711:4:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "12746:29:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12764:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12769:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "12760:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12760:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12773:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "12756:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12756:19:1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "12750:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12791:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "12806:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "12814:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12802:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12802:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12784:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12784:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12784:34:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12838:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12849:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12834:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12834:18:1" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "12858:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "12866:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12854:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12854:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12827:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12827:43:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12827:43:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "12890:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12901:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "12886:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12886:18:1" + }, + { + "arguments": [ + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "12910:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "12918:8:1", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "12906:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "12906:21:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "12879:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "12879:49:1" + }, + "nodeType": "YulExpressionStatement", + "src": "12879:49:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint24__to_t_address_t_address_t_uint24__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "12654:9:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "12665:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "12673:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "12681:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "12692:4:1", + "type": "" + } + ], + "src": "12546:388:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13096:218:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13106:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13118:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13129:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13114:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13114:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13106:4:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13141:29:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13159:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13164:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "13155:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13155:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13168:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13151:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13151:19:1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "13145:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13186:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13201:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "13209:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13197:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13197:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13179:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13179:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13179:34:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13233:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13244:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13229:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13229:18:1" + }, + { + "arguments": [ + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "13253:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "13261:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13249:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13249:15:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13222:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13222:43:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13222:43:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13285:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13296:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13281:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13281:18:1" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "13301:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13274:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13274:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13274:34:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13049:9:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "13060:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13068:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13076:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13087:4:1", + "type": "" + } + ], + "src": "12939:375:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13448:145:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13458:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13470:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13481:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13466:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13466:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13458:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13500:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13515:6:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13531:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13536:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "13527:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13527:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13540:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "13523:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13523:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "13511:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13511:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13493:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13493:51:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13493:51:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13564:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13575:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13560:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13560:18:1" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "13580:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13553:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13553:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13553:34:1" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13409:9:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "13420:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13428:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13439:4:1", + "type": "" + } + ], + "src": "13319:274:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13693:92:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "13703:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13715:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13726:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13711:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13711:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "13703:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13745:9:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13770:6:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13763:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13763:14:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "13756:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13756:22:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13738:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13738:41:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13738:41:1" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13662:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13673:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13684:4:1", + "type": "" + } + ], + "src": "13598:187:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "13911:262:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13928:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "13939:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13921:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13921:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13921:21:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "13951:27:1", + "value": { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "13971:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "13965:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "13965:13:1" + }, + "variables": [ + { + "name": "length", + "nodeType": "YulTypedName", + "src": "13955:6:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "13998:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14009:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "13994:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "13994:18:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14014:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "13987:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "13987:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "13987:34:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "14056:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14064:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14052:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14052:15:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14073:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14084:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14069:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14069:18:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14089:6:1" + } + ], + "functionName": { + "name": "copy_memory_to_memory", + "nodeType": "YulIdentifier", + "src": "14030:21:1" + }, + "nodeType": "YulFunctionCall", + "src": "14030:66:1" + }, + "nodeType": "YulExpressionStatement", + "src": "14030:66:1" + }, + { + "nodeType": "YulAssignment", + "src": "14105:62:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14121:9:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "14140:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14148:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14136:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14136:15:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14157:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "14153:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14153:7:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "14132:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14132:29:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14117:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14117:45:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14164:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14113:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14113:54:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14105:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "13880:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "13891:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "13902:4:1", + "type": "" + } + ], + "src": "13790:383:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14352:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14369:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14380:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14362:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "14362:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "14362:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14403:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14414:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14399:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14399:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14419:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14392:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "14392:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "14392:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14441:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14452:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14437:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14437:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "14457:5:1", + "type": "", + "value": "R30" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14430:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "14430:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "14430:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "14472:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14484:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14495:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14480:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14480:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14472:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2023d9bd35dfc2f245d76061e53d0ff8d185edf4246878b82d30fe779472a56f__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14329:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14343:4:1", + "type": "" + } + ], + "src": "14178:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "14683:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14700:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14711:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14693:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "14693:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "14693:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14734:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14745:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14730:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14730:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14750:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14723:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "14723:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "14723:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14772:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14783:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14768:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14768:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "14788:5:1", + "type": "", + "value": "R13" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "14761:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "14761:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "14761:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "14803:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "14815:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "14826:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "14811:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "14811:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "14803:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2959ad5aff7631ddbc1e2fda1dcba192feba94b00508f94e9b81cde2810d7750__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14660:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "14674:4:1", + "type": "" + } + ], + "src": "14509:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15014:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15031:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15042:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15024:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15024:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15024:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15065:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15076:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15061:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15061:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15081:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15054:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15054:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15054:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15103:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15114:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15099:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15099:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "15119:5:1", + "type": "", + "value": "R22" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15092:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15092:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15092:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "15134:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15146:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15157:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15142:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15142:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15134:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_2e38e7fcc805ee3f93c0e3733870ab4b88276012f3cf5cbb2725fffe037ab10a__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "14991:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15005:4:1", + "type": "" + } + ], + "src": "14840:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15345:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15362:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15373:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15355:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15355:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15355:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15396:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15407:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15392:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15392:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15412:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15385:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15385:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15385:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15434:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15445:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15430:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15430:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "15450:5:1", + "type": "", + "value": "R23" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15423:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15423:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15423:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "15465:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15477:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15488:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15473:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15473:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15465:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_308ba863d677bbbfc70c791c397fdfd660d30183352dcd9949f8c751db93e97e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15322:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15336:4:1", + "type": "" + } + ], + "src": "15171:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "15676:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15693:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15704:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15686:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15686:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15686:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15727:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15738:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15723:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15723:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15743:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15716:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15716:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15716:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15765:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15776:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15761:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15761:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "15781:5:1", + "type": "", + "value": "R25" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "15754:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "15754:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "15754:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "15796:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "15808:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "15819:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "15804:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "15804:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "15796:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3540168dcf753b156485d875bc5fec81f6a213f07b3a86770c08cd8c9b01a7ff__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15653:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15667:4:1", + "type": "" + } + ], + "src": "15502:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16007:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16024:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16035:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16017:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16017:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16017:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16058:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16069:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16054:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16054:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16074:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16047:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16047:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16047:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16096:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16107:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16092:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16092:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "16112:5:1", + "type": "", + "value": "R19" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16085:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16085:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16085:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "16127:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16139:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16150:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16135:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16135:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16127:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_3da18c702e979fad964ca14d268cba446c19015548baffb3f3ae18ac64f1da2c__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "15984:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "15998:4:1", + "type": "" + } + ], + "src": "15833:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16338:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16355:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16366:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16348:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16348:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16348:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16389:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16400:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16385:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16385:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16405:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16378:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16378:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16378:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16427:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16438:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16423:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16423:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "16443:5:1", + "type": "", + "value": "R16" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16416:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16416:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16416:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "16458:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16470:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16481:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16466:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16466:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16458:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16315:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16329:4:1", + "type": "" + } + ], + "src": "16164:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16669:151:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16686:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16697:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16679:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16679:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16679:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16720:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16731:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16716:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16716:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16736:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16709:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16709:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16709:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16758:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16769:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16754:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16754:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "16774:4:1", + "type": "", + "value": "R4" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "16747:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "16747:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "16747:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "16788:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "16800:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "16811:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "16796:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "16796:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "16788:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_5951d11449359f7360e765813bfc1ec8aa3e8e282025691db1b8ec131de30573__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16646:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16660:4:1", + "type": "" + } + ], + "src": "16495:325:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "16999:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17016:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17027:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17009:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17009:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17009:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17050:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17061:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17046:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17046:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17066:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17039:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17039:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17039:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17088:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17099:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17084:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17084:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "17104:5:1", + "type": "", + "value": "R14" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17077:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17077:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17077:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "17119:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17131:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17142:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17127:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17127:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17119:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_7166811bd58291ee940aacae52db5483bb7d8557dc28b5f9feb6c2f0a65f548e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "16976:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "16990:4:1", + "type": "" + } + ], + "src": "16825:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17330:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17347:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17358:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17340:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17340:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17340:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17381:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17392:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17377:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17377:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17397:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17370:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17370:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17370:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17419:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17430:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17415:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17415:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "17435:5:1", + "type": "", + "value": "R11" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17408:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17408:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17408:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "17450:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17462:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17473:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17458:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17458:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17450:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17307:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17321:4:1", + "type": "" + } + ], + "src": "17156:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17661:151:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17678:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17689:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17671:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17671:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17671:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17712:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17723:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17708:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17708:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17728:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17701:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17701:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17701:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17750:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17761:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17746:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17746:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "17766:4:1", + "type": "", + "value": "R5" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "17739:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "17739:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "17739:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "17780:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "17792:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "17803:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "17788:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "17788:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "17780:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_789f288596bd3269827a783ec32644552a0525213907e15c35a4e2c9063dd7a6__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17638:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17652:4:1", + "type": "" + } + ], + "src": "17487:325:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "17991:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18008:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18019:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18001:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18001:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18001:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18042:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18053:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18038:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18038:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18058:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18031:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18031:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18031:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18080:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18091:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18076:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18076:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "18096:5:1", + "type": "", + "value": "R21" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18069:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18069:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18069:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "18111:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18123:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18134:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18119:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18119:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18111:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "17968:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "17982:4:1", + "type": "" + } + ], + "src": "17817:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18322:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18339:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18350:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18332:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18332:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18332:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18373:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18384:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18369:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18369:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18389:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18362:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18362:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18362:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18411:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18422:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18407:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18407:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "18427:5:1", + "type": "", + "value": "R10" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18400:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18400:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18400:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "18442:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18454:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18465:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18450:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18450:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18442:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18299:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18313:4:1", + "type": "" + } + ], + "src": "18148:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18653:150:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18670:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18681:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18663:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18663:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18663:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18704:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18715:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18700:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18700:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18720:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18693:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18693:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18693:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18742:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18753:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18738:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18738:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "18758:3:1", + "type": "", + "value": "T" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18731:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18731:31:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18731:31:1" + }, + { + "nodeType": "YulAssignment", + "src": "18771:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18783:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "18794:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "18779:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "18779:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "18771:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18630:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18644:4:1", + "type": "" + } + ], + "src": "18479:324:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "18982:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "18999:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19010:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "18992:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "18992:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "18992:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19033:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19044:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19029:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19029:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19049:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19022:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19022:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19022:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19071:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19082:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19067:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19067:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "19087:5:1", + "type": "", + "value": "R15" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19060:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19060:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19060:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "19102:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19114:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19125:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19110:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19110:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19102:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_92eb1283615753eb74f5e235266f62e5186d064b53e6ec7296270b68185af607__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "18959:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "18973:4:1", + "type": "" + } + ], + "src": "18808:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19313:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19330:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19341:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19323:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19323:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19323:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19364:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19375:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19360:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19360:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19380:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19353:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19353:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19353:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19402:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19413:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19398:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19398:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "19418:5:1", + "type": "", + "value": "R18" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19391:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19391:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19391:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "19433:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19445:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19456:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19441:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19441:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19433:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_987165af1bd7cdeea74e381f0b6cf1435fa3a690007d65767176649c7a94035e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19290:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19304:4:1", + "type": "" + } + ], + "src": "19139:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19644:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19661:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19672:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19654:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19654:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19654:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19695:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19706:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19691:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19691:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19711:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19684:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19684:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19684:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19733:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19744:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19729:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19729:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "19749:5:1", + "type": "", + "value": "R24" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19722:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19722:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19722:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "19764:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19776:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "19787:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "19772:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "19772:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "19764:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_a31b5790a5af7fcca697766dbe445c8f875b71b716177ebbbf059fb39709bd68__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19621:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19635:4:1", + "type": "" + } + ], + "src": "19470:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "19975:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "19992:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20003:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "19985:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "19985:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "19985:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20026:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20037:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20022:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20022:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20042:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20015:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20015:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20015:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20064:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20075:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20060:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20060:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "20080:5:1", + "type": "", + "value": "R26" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20053:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20053:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20053:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "20095:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20107:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20118:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20103:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20103:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20095:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b2fa7c79c4d44f1d5423950380e88c48723646df4bf51255e7a7f8a64cddc5bc__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "19952:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "19966:4:1", + "type": "" + } + ], + "src": "19801:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20306:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20323:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20334:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20316:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20316:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20316:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20357:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20368:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20353:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20353:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20373:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20346:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20346:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20346:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20395:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20406:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20391:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20391:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "20411:5:1", + "type": "", + "value": "R28" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20384:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20384:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20384:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "20426:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20438:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20449:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20434:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20434:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20426:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_b8ca32e68d3fec937682270b839fa39b03e21424ae11f96bb0ebbbca45f4721b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20283:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20297:4:1", + "type": "" + } + ], + "src": "20132:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20637:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20654:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20665:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20647:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20647:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20647:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20688:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20699:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20684:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20684:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20704:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20677:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20677:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20677:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20726:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20737:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20722:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20722:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "20742:5:1", + "type": "", + "value": "R29" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20715:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20715:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20715:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "20757:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20769:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20780:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "20765:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "20765:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "20757:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c0a12e27363a72c44b40485896a0627b226165baaf56b2bd397f78cd1964a602__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20614:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20628:4:1", + "type": "" + } + ], + "src": "20463:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "20968:151:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "20985:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "20996:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "20978:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "20978:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "20978:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21019:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21030:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21015:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21015:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21035:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21008:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21008:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21008:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21057:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21068:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21053:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21053:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "21073:4:1", + "type": "", + "value": "R8" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21046:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21046:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21046:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "21087:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21099:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21110:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21095:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21095:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21087:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_c55547b6f0665cc51e40102080acdf673c9dc04066820f1bbe0a1abe967e3c82__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "20945:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "20959:4:1", + "type": "" + } + ], + "src": "20794:325:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21298:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21315:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21326:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21308:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21308:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21308:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21349:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21360:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21345:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21345:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21365:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21338:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21338:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21338:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21387:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21398:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21383:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21383:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "21403:5:1", + "type": "", + "value": "R17" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21376:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21376:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21376:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "21418:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21430:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21441:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21426:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21426:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21418:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21275:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21289:4:1", + "type": "" + } + ], + "src": "21124:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21629:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21646:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21657:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21639:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21639:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21639:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21680:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21691:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21676:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21676:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21696:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21669:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21669:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21669:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21718:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21729:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21714:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21714:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "21734:5:1", + "type": "", + "value": "R12" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21707:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21707:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21707:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "21749:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21761:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21772:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "21757:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "21757:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "21749:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21606:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21620:4:1", + "type": "" + } + ], + "src": "21455:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "21960:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "21977:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "21988:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "21970:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "21970:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "21970:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22011:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22022:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22007:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22007:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22027:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22000:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22000:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22000:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22049:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22060:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22045:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22045:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "22065:5:1", + "type": "", + "value": "R20" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22038:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22038:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22038:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "22080:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22092:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22103:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22088:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22088:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22080:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d7ddf5c7237b6fcbd18a81e0363800a2edd93e5d7694f12b68175c8be112382d__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "21937:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "21951:4:1", + "type": "" + } + ], + "src": "21786:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22291:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22308:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22319:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22301:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22301:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22301:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22342:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22353:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22338:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22338:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22358:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22331:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22331:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22331:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22380:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22391:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22376:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22376:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "22396:5:1", + "type": "", + "value": "R27" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22369:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22369:33:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22369:33:1" + }, + { + "nodeType": "YulAssignment", + "src": "22411:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22423:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22434:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22419:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22419:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22411:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d988122cca1ef6058e20807c88a9a00b3823e5269ddd73ccd1aae2ddbefd2d9e__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22268:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22282:4:1", + "type": "" + } + ], + "src": "22117:326:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22622:151:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22639:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22650:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22632:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22632:21:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22632:21:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22673:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22684:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22669:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22669:18:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22689:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22662:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22662:29:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22662:29:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22711:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22722:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22707:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22707:18:1" + }, + { + "kind": "string", + "nodeType": "YulLiteral", + "src": "22727:4:1", + "type": "", + "value": "R6" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22700:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22700:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22700:32:1" + }, + { + "nodeType": "YulAssignment", + "src": "22741:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22753:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22764:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22749:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22749:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22741:4:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_e6d47854c9a24d22ca7022dcfd2fd5f2bb6e30b687e6bebd6cd16e9f534a124b__to_t_string_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22599:9:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22613:4:1", + "type": "" + } + ], + "src": "22448:325:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "22939:411:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "22949:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22961:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "22972:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "22957:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "22957:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "22949:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "22992:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23009:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23003:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23003:13:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "22985:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "22985:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "22985:32:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23037:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23048:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23033:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23033:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23069:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23077:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23065:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23065:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23059:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23059:24:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23093:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23098:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "23089:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23089:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23102:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "23085:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23085:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "23055:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23055:50:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23026:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23026:80:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23026:80:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "23115:44:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23145:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23153:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23141:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23141:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23135:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23135:24:1" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "23119:12:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "23168:44:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23178:34:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "23172:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23232:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23243:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23228:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23228:20:1" + }, + { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "23254:12:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "23268:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "23250:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23250:21:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23221:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23221:51:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23221:51:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23292:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23303:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23288:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23288:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23324:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23332:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23320:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23320:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23314:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23314:24:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "23340:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "23310:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23310:33:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23281:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23281:63:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23281:63:1" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_CollectParams_$125_memory_ptr__to_t_struct$_CollectParams_$125_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "22908:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "22919:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "22930:4:1", + "type": "" + } + ], + "src": "22778:572:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "23536:377:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "23546:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23558:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23569:3:1", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23554:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23554:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "23546:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23589:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23606:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23600:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23600:13:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23582:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23582:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23582:32:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23634:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23645:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23630:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23630:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23666:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23674:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23662:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23662:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23656:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23656:24:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23682:34:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "23652:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23652:65:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23623:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23623:95:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23623:95:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23738:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23749:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23734:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23734:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23766:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23774:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23762:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23762:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23756:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23756:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23727:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23727:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23727:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23801:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23812:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23797:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23797:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23829:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23837:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23825:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23825:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23819:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23819:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23790:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23790:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23790:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "23864:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23875:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23860:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23860:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "23892:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "23900:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "23888:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "23888:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "23882:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "23882:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "23853:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "23853:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "23853:54:1" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_DecreaseLiquidityParams_$116_memory_ptr__to_t_struct$_DecreaseLiquidityParams_$116_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "23505:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "23516:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "23527:4:1", + "type": "" + } + ], + "src": "23355:558:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24097:614:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24107:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24119:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24130:3:1", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24115:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24115:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24107:4:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "24143:29:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24161:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24166:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "24157:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24157:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24170:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "24153:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24153:19:1" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "24147:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24188:9:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24209:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24203:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24203:13:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "24218:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "24199:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24199:22:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24181:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24181:41:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24181:41:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24242:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24253:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24238:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24238:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24274:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24282:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24270:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24270:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24264:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24264:24:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "24290:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "24260:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24260:33:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24231:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24231:63:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24231:63:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24314:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24325:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24310:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24310:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24346:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24354:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24342:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24342:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24336:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24336:24:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24362:8:1", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "24332:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24332:39:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24303:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24303:69:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24303:69:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24392:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24403:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24388:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24388:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24424:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24432:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24420:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24420:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24414:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24414:24:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "24440:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "24410:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24410:33:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24381:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24381:63:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24381:63:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24464:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24475:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24460:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24460:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24492:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24500:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24488:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24488:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24482:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24482:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24453:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24453:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24453:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24527:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24538:4:1", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24523:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24523:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24555:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24563:4:1", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24551:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24551:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24545:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24545:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24516:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24516:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24516:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24590:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24601:4:1", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24586:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24586:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24618:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24626:4:1", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24614:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24614:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24608:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24608:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24579:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24579:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24579:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24653:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24664:4:1", + "type": "", + "value": "0xe0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24649:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24649:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24685:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24693:4:1", + "type": "", + "value": "0xe0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24681:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24681:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24675:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24675:24:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "24701:2:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "24671:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24671:33:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24642:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24642:63:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24642:63:1" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_ExactInputSingleParams_$219_memory_ptr__to_t_struct$_ExactInputSingleParams_$219_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24066:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "24077:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24088:4:1", + "type": "" + } + ], + "src": "23918:793:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "24897:399:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "24907:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24919:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "24930:3:1", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24915:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24915:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "24907:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24950:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "24967:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "24961:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "24961:13:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24943:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24943:32:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24943:32:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "24995:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25006:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "24991:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "24991:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25023:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25031:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25019:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25019:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25013:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25013:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "24984:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "24984:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "24984:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25058:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25069:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25054:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25054:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25086:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25094:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25082:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25082:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25076:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25076:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25047:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "25047:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25047:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25121:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25132:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25117:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25117:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25149:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25157:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25145:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25145:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25139:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25139:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25110:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "25110:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25110:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25184:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25195:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25180:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25180:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25212:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25220:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25208:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25208:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25202:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25202:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25173:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "25173:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25173:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25247:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25258:4:1", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25243:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25243:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25275:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25283:4:1", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25271:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25271:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25265:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25265:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "25236:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "25236:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25236:54:1" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_IncreaseLiquidityParams_$105_memory_ptr__to_t_struct$_IncreaseLiquidityParams_$105_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "24866:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "24877:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "24888:4:1", + "type": "" + } + ], + "src": "24716:580:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "25454:1077:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "25464:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25476:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25487:3:1", + "type": "", + "value": "352" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25472:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25472:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "25464:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25527:6:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25521:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25521:13:1" + }, + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25536:9:1" + } + ], + "functionName": { + "name": "abi_encode_t_address", + "nodeType": "YulIdentifier", + "src": "25500:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "25500:46:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25500:46:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "25555:44:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25585:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25593:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25581:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25581:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25575:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25575:24:1" + }, + "variables": [ + { + "name": "memberValue0", + "nodeType": "YulTypedName", + "src": "25559:12:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0", + "nodeType": "YulIdentifier", + "src": "25629:12:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25647:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25658:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25643:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25643:20:1" + } + ], + "functionName": { + "name": "abi_encode_t_address", + "nodeType": "YulIdentifier", + "src": "25608:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "25608:56:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25608:56:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "25673:46:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25705:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25713:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25701:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25701:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25695:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25695:24:1" + }, + "variables": [ + { + "name": "memberValue0_1", + "nodeType": "YulTypedName", + "src": "25677:14:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0_1", + "nodeType": "YulIdentifier", + "src": "25748:14:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25768:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25779:4:1", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25764:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25764:20:1" + } + ], + "functionName": { + "name": "abi_encode_t_uint24", + "nodeType": "YulIdentifier", + "src": "25728:19:1" + }, + "nodeType": "YulFunctionCall", + "src": "25728:57:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25728:57:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "25794:46:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25826:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25834:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25822:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25822:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25816:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25816:24:1" + }, + "variables": [ + { + "name": "memberValue0_2", + "nodeType": "YulTypedName", + "src": "25798:14:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0_2", + "nodeType": "YulIdentifier", + "src": "25868:14:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "25888:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25899:4:1", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25884:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25884:20:1" + } + ], + "functionName": { + "name": "abi_encode_t_int24", + "nodeType": "YulIdentifier", + "src": "25849:18:1" + }, + "nodeType": "YulFunctionCall", + "src": "25849:56:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25849:56:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "25914:46:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "25946:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "25954:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "25942:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "25942:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "25936:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "25936:24:1" + }, + "variables": [ + { + "name": "memberValue0_3", + "nodeType": "YulTypedName", + "src": "25918:14:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0_3", + "nodeType": "YulIdentifier", + "src": "25988:14:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26008:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26019:4:1", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26004:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26004:20:1" + } + ], + "functionName": { + "name": "abi_encode_t_int24", + "nodeType": "YulIdentifier", + "src": "25969:18:1" + }, + "nodeType": "YulFunctionCall", + "src": "25969:56:1" + }, + "nodeType": "YulExpressionStatement", + "src": "25969:56:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26045:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26056:4:1", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26041:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26041:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26073:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26081:4:1", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26069:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26069:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26063:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "26063:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26034:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26034:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26034:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26108:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26119:4:1", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26104:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26104:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26136:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26144:4:1", + "type": "", + "value": "0xc0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26132:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26132:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26126:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "26126:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26097:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26097:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26097:54:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26171:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26182:4:1", + "type": "", + "value": "0xe0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26167:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26167:20:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26199:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26207:4:1", + "type": "", + "value": "0xe0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26195:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26195:17:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26189:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "26189:24:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26160:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26160:54:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26160:54:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "26223:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26233:6:1", + "type": "", + "value": "0x0100" + }, + "variables": [ + { + "name": "_1", + "nodeType": "YulTypedName", + "src": "26227:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26259:9:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "26270:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26255:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26255:18:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26285:6:1" + }, + { + "name": "_1", + "nodeType": "YulIdentifier", + "src": "26293:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26281:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26281:15:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26275:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "26275:22:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26248:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26248:50:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26248:50:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "26307:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26317:6:1", + "type": "", + "value": "0x0120" + }, + "variables": [ + { + "name": "_2", + "nodeType": "YulTypedName", + "src": "26311:2:1", + "type": "" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "26332:44:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26364:6:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "26372:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26360:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26360:15:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26354:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "26354:22:1" + }, + "variables": [ + { + "name": "memberValue0_4", + "nodeType": "YulTypedName", + "src": "26336:14:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memberValue0_4", + "nodeType": "YulIdentifier", + "src": "26406:14:1" + }, + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26426:9:1" + }, + { + "name": "_2", + "nodeType": "YulIdentifier", + "src": "26437:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26422:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26422:18:1" + } + ], + "functionName": { + "name": "abi_encode_t_address", + "nodeType": "YulIdentifier", + "src": "26385:20:1" + }, + "nodeType": "YulFunctionCall", + "src": "26385:56:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26385:56:1" + }, + { + "nodeType": "YulVariableDeclaration", + "src": "26450:16:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26460:6:1", + "type": "", + "value": "0x0140" + }, + "variables": [ + { + "name": "_3", + "nodeType": "YulTypedName", + "src": "26454:2:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26486:9:1" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "26497:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26482:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26482:18:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26512:6:1" + }, + { + "name": "_3", + "nodeType": "YulIdentifier", + "src": "26520:2:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26508:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26508:15:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "26502:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "26502:22:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26475:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26475:50:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26475:50:1" + } + ] + }, + "name": "abi_encode_tuple_t_struct$_MintParams_$92_memory_ptr__to_t_struct$_MintParams_$92_memory_ptr__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "25423:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "25434:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "25445:4:1", + "type": "" + } + ], + "src": "25301:1230:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "26693:203:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "26703:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26715:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26726:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26711:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26711:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "26703:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26745:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "26760:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26768:34:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "26756:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26756:47:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26738:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26738:66:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26738:66:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26824:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26835:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26820:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26820:18:1" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "26840:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26813:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26813:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26813:34:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "26867:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "26878:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "26863:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "26863:18:1" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "26883:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "26856:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "26856:34:1" + }, + "nodeType": "YulExpressionStatement", + "src": "26856:34:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26646:9:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "26657:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "26665:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26673:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26684:4:1", + "type": "" + } + ], + "src": "26536:360:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27000:89:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27010:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27022:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27033:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27018:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27018:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27010:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27052:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27067:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27075:6:1", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27063:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27063:19:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27045:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "27045:38:1" + }, + "nodeType": "YulExpressionStatement", + "src": "27045:38:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "26969:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "26980:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "26991:4:1", + "type": "" + } + ], + "src": "26901:188:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27195:102:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27205:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27217:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27228:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27213:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27213:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27205:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27247:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27262:6:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27278:3:1", + "type": "", + "value": "184" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27283:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "27274:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27274:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27287:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "27270:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27270:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27258:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27258:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27240:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "27240:51:1" + }, + "nodeType": "YulExpressionStatement", + "src": "27240:51:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint184__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27164:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27175:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27186:4:1", + "type": "" + } + ], + "src": "27094:203:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27477:277:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27487:27:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27499:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27510:3:1", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27495:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27495:19:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27487:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27530:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27545:6:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27561:3:1", + "type": "", + "value": "184" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27566:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "27557:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27557:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27570:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "27553:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27553:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27541:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27541:32:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27523:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "27523:51:1" + }, + "nodeType": "YulExpressionStatement", + "src": "27523:51:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27594:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27605:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27590:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27590:18:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27621:1:1", + "type": "", + "value": "2" + }, + { + "name": "value1", + "nodeType": "YulIdentifier", + "src": "27624:6:1" + } + ], + "functionName": { + "name": "signextend", + "nodeType": "YulIdentifier", + "src": "27610:10:1" + }, + "nodeType": "YulFunctionCall", + "src": "27610:21:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27583:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "27583:49:1" + }, + "nodeType": "YulExpressionStatement", + "src": "27583:49:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27652:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27663:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27648:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27648:18:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27679:1:1", + "type": "", + "value": "2" + }, + { + "name": "value2", + "nodeType": "YulIdentifier", + "src": "27682:6:1" + } + ], + "functionName": { + "name": "signextend", + "nodeType": "YulIdentifier", + "src": "27668:10:1" + }, + "nodeType": "YulFunctionCall", + "src": "27668:21:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27641:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "27641:49:1" + }, + "nodeType": "YulExpressionStatement", + "src": "27641:49:1" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27710:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27721:2:1", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27706:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27706:18:1" + }, + { + "arguments": [ + { + "name": "value3", + "nodeType": "YulIdentifier", + "src": "27730:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27738:8:1", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27726:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27726:21:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27699:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "27699:49:1" + }, + "nodeType": "YulExpressionStatement", + "src": "27699:49:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint184_t_int24_t_int24_t_uint24__to_t_uint184_t_int24_t_int24_t_uint24__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27422:9:1", + "type": "" + }, + { + "name": "value3", + "nodeType": "YulTypedName", + "src": "27433:6:1", + "type": "" + }, + { + "name": "value2", + "nodeType": "YulTypedName", + "src": "27441:6:1", + "type": "" + }, + { + "name": "value1", + "nodeType": "YulTypedName", + "src": "27449:6:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27457:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27468:4:1", + "type": "" + } + ], + "src": "27302:452:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "27858:91:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "27868:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27880:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27891:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "27876:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27876:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "27868:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "27910:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "27925:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "27933:8:1", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "27921:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "27921:21:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "27903:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "27903:40:1" + }, + "nodeType": "YulExpressionStatement", + "src": "27903:40:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "27827:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "27838:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "27849:4:1", + "type": "" + } + ], + "src": "27759:190:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28055:76:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28065:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28077:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28088:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28073:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28073:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28065:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28107:9:1" + }, + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "28118:6:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28100:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "28100:25:1" + }, + "nodeType": "YulExpressionStatement", + "src": "28100:25:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28024:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "28035:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28046:4:1", + "type": "" + } + ], + "src": "27954:177:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28233:87:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28243:26:1", + "value": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28255:9:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28266:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28251:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28251:18:1" + }, + "variableNames": [ + { + "name": "tail", + "nodeType": "YulIdentifier", + "src": "28243:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nodeType": "YulIdentifier", + "src": "28285:9:1" + }, + { + "arguments": [ + { + "name": "value0", + "nodeType": "YulIdentifier", + "src": "28300:6:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28308:4:1", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "28296:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28296:17:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28278:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "28278:36:1" + }, + "nodeType": "YulExpressionStatement", + "src": "28278:36:1" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nodeType": "YulTypedName", + "src": "28202:9:1", + "type": "" + }, + { + "name": "value0", + "nodeType": "YulTypedName", + "src": "28213:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nodeType": "YulTypedName", + "src": "28224:4:1", + "type": "" + } + ], + "src": "28136:184:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28369:198:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28379:19:1", + "value": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28395:2:1", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "28389:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "28389:9:1" + }, + "variableNames": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "28379:6:1" + } + ] + }, + { + "nodeType": "YulVariableDeclaration", + "src": "28407:35:1", + "value": { + "arguments": [ + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "28429:6:1" + }, + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "28437:4:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28425:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28425:17:1" + }, + "variables": [ + { + "name": "newFreePtr", + "nodeType": "YulTypedName", + "src": "28411:10:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28517:13:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "invalid", + "nodeType": "YulIdentifier", + "src": "28519:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "28519:9:1" + }, + "nodeType": "YulExpressionStatement", + "src": "28519:9:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "28460:10:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28472:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "28457:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "28457:34:1" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "28496:10:1" + }, + { + "name": "memPtr", + "nodeType": "YulIdentifier", + "src": "28508:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "28493:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "28493:22:1" + } + ], + "functionName": { + "name": "or", + "nodeType": "YulIdentifier", + "src": "28454:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "28454:62:1" + }, + "nodeType": "YulIf", + "src": "28451:2:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28546:2:1", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nodeType": "YulIdentifier", + "src": "28550:10:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28539:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "28539:22:1" + }, + "nodeType": "YulExpressionStatement", + "src": "28539:22:1" + } + ] + }, + "name": "allocateMemory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nodeType": "YulTypedName", + "src": "28349:4:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nodeType": "YulTypedName", + "src": "28358:6:1", + "type": "" + } + ], + "src": "28325:242:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28625:205:1", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "28635:10:1", + "value": { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28644:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nodeType": "YulTypedName", + "src": "28639:1:1", + "type": "" + } + ] + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28704:63:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "28729:3:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "28734:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28725:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28725:11:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nodeType": "YulIdentifier", + "src": "28748:3:1" + }, + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "28753:1:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28744:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28744:11:1" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "28738:5:1" + }, + "nodeType": "YulFunctionCall", + "src": "28738:18:1" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28718:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "28718:39:1" + }, + "nodeType": "YulExpressionStatement", + "src": "28718:39:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "28665:1:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "28668:6:1" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "28662:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "28662:13:1" + }, + "nodeType": "YulForLoop", + "post": { + "nodeType": "YulBlock", + "src": "28676:19:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "28678:15:1", + "value": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "28687:1:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28690:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28683:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28683:10:1" + }, + "variableNames": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "28678:1:1" + } + ] + } + ] + }, + "pre": { + "nodeType": "YulBlock", + "src": "28658:3:1", + "statements": [] + }, + "src": "28654:113:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28793:31:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nodeType": "YulIdentifier", + "src": "28806:3:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "28811:6:1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "28802:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28802:16:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28820:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nodeType": "YulIdentifier", + "src": "28795:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "28795:27:1" + }, + "nodeType": "YulExpressionStatement", + "src": "28795:27:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nodeType": "YulIdentifier", + "src": "28782:1:1" + }, + { + "name": "length", + "nodeType": "YulIdentifier", + "src": "28785:6:1" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "28779:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "28779:13:1" + }, + "nodeType": "YulIf", + "src": "28776:2:1" + } + ] + }, + "name": "copy_memory_to_memory", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nodeType": "YulTypedName", + "src": "28603:3:1", + "type": "" + }, + { + "name": "dst", + "nodeType": "YulTypedName", + "src": "28608:3:1", + "type": "" + }, + { + "name": "length", + "nodeType": "YulTypedName", + "src": "28613:6:1", + "type": "" + } + ], + "src": "28572:258:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "28882:86:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "28946:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28955:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28958:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "28948:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "28948:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "28948:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28905:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "28916:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28931:3:1", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28936:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nodeType": "YulIdentifier", + "src": "28927:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28927:11:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "28940:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "28923:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28923:19:1" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "28912:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "28912:31:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "28902:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "28902:42:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "28895:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "28895:50:1" + }, + "nodeType": "YulIf", + "src": "28892:2:1" + } + ] + }, + "name": "validator_revert_t_address", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "28871:5:1", + "type": "" + } + ], + "src": "28835:133:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29017:76:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "29071:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29080:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29083:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29073:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29073:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "29073:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29040:5:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29061:5:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29054:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29054:13:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29047:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29047:21:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "29037:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "29037:32:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29030:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29030:40:1" + }, + "nodeType": "YulIf", + "src": "29027:2:1" + } + ] + }, + "name": "validator_revert_t_bool", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29006:5:1", + "type": "" + } + ], + "src": "28973:120:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29143:75:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "29196:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29205:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29208:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29198:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29198:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "29198:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29166:5:1" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29184:1:1", + "type": "", + "value": "2" + }, + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29187:5:1" + } + ], + "functionName": { + "name": "signextend", + "nodeType": "YulIdentifier", + "src": "29173:10:1" + }, + "nodeType": "YulFunctionCall", + "src": "29173:20:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "29163:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "29163:31:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29156:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29156:39:1" + }, + "nodeType": "YulIf", + "src": "29153:2:1" + } + ] + }, + "name": "validator_revert_t_int24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29132:5:1", + "type": "" + } + ], + "src": "29098:120:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29269:73:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "29320:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29329:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29332:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29322:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29322:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "29322:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29292:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29303:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29310:6:1", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29299:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "29299:18:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "29289:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "29289:29:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29282:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29282:37:1" + }, + "nodeType": "YulIf", + "src": "29279:2:1" + } + ] + }, + "name": "validator_revert_t_uint16", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29258:5:1", + "type": "" + } + ], + "src": "29223:119:1" + }, + { + "body": { + "nodeType": "YulBlock", + "src": "29393:75:1", + "statements": [ + { + "body": { + "nodeType": "YulBlock", + "src": "29446:16:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29455:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29458:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "29448:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29448:12:1" + }, + "nodeType": "YulExpressionStatement", + "src": "29448:12:1" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29416:5:1" + }, + { + "arguments": [ + { + "name": "value", + "nodeType": "YulIdentifier", + "src": "29427:5:1" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "29434:8:1", + "type": "", + "value": "0xffffff" + } + ], + "functionName": { + "name": "and", + "nodeType": "YulIdentifier", + "src": "29423:3:1" + }, + "nodeType": "YulFunctionCall", + "src": "29423:20:1" + } + ], + "functionName": { + "name": "eq", + "nodeType": "YulIdentifier", + "src": "29413:2:1" + }, + "nodeType": "YulFunctionCall", + "src": "29413:31:1" + } + ], + "functionName": { + "name": "iszero", + "nodeType": "YulIdentifier", + "src": "29406:6:1" + }, + "nodeType": "YulFunctionCall", + "src": "29406:39:1" + }, + "nodeType": "YulIf", + "src": "29403:2:1" + } + ] + }, + "name": "validator_revert_t_uint24", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nodeType": "YulTypedName", + "src": "29382:5:1", + "type": "" + } + ], + "src": "29347:121:1" + } + ] + }, + "contents": "{\n { }\n function abi_decode_t_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n function abi_decode_t_int24(offset) -> value\n {\n value := calldataload(offset)\n validator_revert_t_int24(value)\n }\n function abi_decode_t_int24_fromMemory(offset) -> value\n {\n value := mload(offset)\n validator_revert_t_int24(value)\n }\n function abi_decode_t_uint128_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_t_uint24(offset) -> value\n {\n value := calldataload(offset)\n validator_revert_t_uint24(value)\n }\n function abi_decode_t_uint24_fromMemory(offset) -> value\n {\n value := mload(offset)\n validator_revert_t_uint24(value)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := mload(headStart)\n validator_revert_t_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_t_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_t_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_t_bool(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n let _1 := 32\n if slt(sub(dataEnd, headStart), _1) { revert(value0, value0) }\n let offset := calldataload(headStart)\n let _2 := 0xffffffffffffffff\n if gt(offset, _2) { revert(value0, value0) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value0, value0) }\n let _4 := calldataload(_3)\n if gt(_4, _2) { invalid() }\n let dst := allocateMemory(add(mul(_4, _1), _1))\n let dst_1 := dst\n mstore(dst, _4)\n dst := add(dst, _1)\n let src := add(_3, _1)\n let _5 := 0x80\n if gt(add(add(_3, mul(_4, _5)), _1), dataEnd) { revert(value0, value0) }\n let i := value0\n for { } lt(i, _4) { i := add(i, 1) }\n {\n if slt(sub(dataEnd, src), _5) { revert(value0, value0) }\n let _6 := 64\n let memPtr := mload(_6)\n let newFreePtr := add(memPtr, _5)\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { invalid() }\n mstore(_6, newFreePtr)\n let value := calldataload(src)\n if iszero(eq(value, and(value, sub(shl(184, 1), 1)))) { revert(value0, value0) }\n mstore(memPtr, value)\n let value_1 := calldataload(add(src, _1))\n validator_revert_t_int24(value_1)\n mstore(add(memPtr, _1), value_1)\n mstore(add(memPtr, _6), abi_decode_t_int24(add(src, _6)))\n let _7 := 96\n mstore(add(memPtr, _7), abi_decode_t_uint24(add(src, _7)))\n mstore(dst, memPtr)\n dst := add(dst, _1)\n src := add(src, _5)\n }\n value0 := dst_1\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := mload(headStart)\n validator_revert_t_bool(value)\n value0 := value\n }\n function abi_decode_tuple_t_struct$_CellarAddParams_$1277_calldata_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 192) { revert(value0, value0) }\n value0 := headStart\n }\n function abi_decode_tuple_t_struct$_CellarAddParams_$1277_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 192) { revert(value0, value0) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 192)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n mstore(memPtr, calldataload(headStart))\n mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n mstore(add(memPtr, 96), calldataload(add(headStart, 96)))\n let value := calldataload(add(headStart, 128))\n validator_revert_t_address(value)\n mstore(add(memPtr, 128), value)\n mstore(add(memPtr, 160), calldataload(add(headStart, 160)))\n value0 := memPtr\n }\n function abi_decode_tuple_t_struct$_CellarRemoveParams_$1288_calldata_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 160) { revert(value0, value0) }\n value0 := headStart\n }\n function abi_decode_tuple_t_struct$_CellarRemoveParams_$1288_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 160) { revert(value0, value0) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 160)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n mstore(memPtr, calldataload(headStart))\n mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n let value := calldataload(add(headStart, 96))\n validator_revert_t_address(value)\n mstore(add(memPtr, 96), value)\n mstore(add(memPtr, 128), calldataload(add(headStart, 128)))\n value0 := memPtr\n }\n function abi_decode_tuple_t_uint128t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n value0 := abi_decode_t_uint128_fromMemory(headStart)\n value1 := mload(add(headStart, 32))\n value2 := mload(add(headStart, 64))\n }\n function abi_decode_tuple_t_uint16(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := calldataload(headStart)\n validator_revert_t_uint16(value)\n value0 := value\n }\n function abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(value2, value2) }\n let value := mload(headStart)\n validator_revert_t_address(value)\n value0 := value\n let value_1 := mload(add(headStart, 32))\n validator_revert_t_int24(value_1)\n value1 := value_1\n let value_2 := mload(add(headStart, 64))\n validator_revert_t_uint16(value_2)\n value2 := value_2\n let value_3 := mload(add(headStart, 96))\n validator_revert_t_uint16(value_3)\n value3 := value_3\n let value_4 := mload(add(headStart, 128))\n validator_revert_t_uint16(value_4)\n value4 := value_4\n let value_5 := mload(add(headStart, 160))\n if iszero(eq(value_5, and(value_5, 0xff))) { revert(value5, value5) }\n value5 := value_5\n let value_6 := mload(add(headStart, 192))\n validator_revert_t_bool(value_6)\n value6 := value_6\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := mload(headStart)\n }\n function abi_decode_tuple_t_uint256t_uint128t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n value0 := mload(headStart)\n value1 := abi_decode_t_uint128_fromMemory(add(headStart, 32))\n value2 := mload(add(headStart, 64))\n value3 := mload(add(headStart, 96))\n }\n function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n value0 := mload(headStart)\n value1 := mload(add(headStart, 32))\n }\n function abi_decode_tuple_t_uint96t_addresst_addresst_addresst_uint24t_int24t_int24t_uint128t_uint256t_uint256t_uint128t_uint128_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, value11\n {\n if slt(sub(dataEnd, headStart), 384) { revert(value6, value6) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffff))) { revert(value6, value6) }\n value0 := value\n value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n value2 := abi_decode_t_address_fromMemory(add(headStart, 64))\n value3 := abi_decode_t_address_fromMemory(add(headStart, 96))\n value4 := abi_decode_t_uint24_fromMemory(add(headStart, 128))\n value5 := abi_decode_t_int24_fromMemory(add(headStart, 160))\n value6 := abi_decode_t_int24_fromMemory(add(headStart, 192))\n value7 := abi_decode_t_uint128_fromMemory(add(headStart, 224))\n value8 := mload(add(headStart, 256))\n value9 := mload(add(headStart, 288))\n value10 := abi_decode_t_uint128_fromMemory(add(headStart, 320))\n value11 := abi_decode_t_uint128_fromMemory(add(headStart, 352))\n }\n function abi_encode_t_address(value, pos)\n {\n mstore(pos, and(value, sub(shl(160, 1), 1)))\n }\n function abi_encode_t_int24(value, pos)\n {\n mstore(pos, signextend(2, value))\n }\n function abi_encode_t_uint24(value, pos)\n {\n mstore(pos, and(value, 0xffffff))\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_address_payable__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_address_t_address_t_uint24__to_t_address_t_address_t_uint24__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, 0xffffff))\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_encode_tuple_t_stringliteral_2023d9bd35dfc2f245d76061e53d0ff8d185edf4246878b82d30fe779472a56f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R30\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2959ad5aff7631ddbc1e2fda1dcba192feba94b00508f94e9b81cde2810d7750__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R13\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2e38e7fcc805ee3f93c0e3733870ab4b88276012f3cf5cbb2725fffe037ab10a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R22\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_308ba863d677bbbfc70c791c397fdfd660d30183352dcd9949f8c751db93e97e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R23\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_3540168dcf753b156485d875bc5fec81f6a213f07b3a86770c08cd8c9b01a7ff__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R25\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_3da18c702e979fad964ca14d268cba446c19015548baffb3f3ae18ac64f1da2c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R19\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R16\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_5951d11449359f7360e765813bfc1ec8aa3e8e282025691db1b8ec131de30573__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 2)\n mstore(add(headStart, 64), \"R4\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_7166811bd58291ee940aacae52db5483bb7d8557dc28b5f9feb6c2f0a65f548e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R14\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R11\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_789f288596bd3269827a783ec32644552a0525213907e15c35a4e2c9063dd7a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 2)\n mstore(add(headStart, 64), \"R5\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R21\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R10\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 1)\n mstore(add(headStart, 64), \"T\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_92eb1283615753eb74f5e235266f62e5186d064b53e6ec7296270b68185af607__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R15\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_987165af1bd7cdeea74e381f0b6cf1435fa3a690007d65767176649c7a94035e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R18\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_a31b5790a5af7fcca697766dbe445c8f875b71b716177ebbbf059fb39709bd68__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R24\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b2fa7c79c4d44f1d5423950380e88c48723646df4bf51255e7a7f8a64cddc5bc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R26\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b8ca32e68d3fec937682270b839fa39b03e21424ae11f96bb0ebbbca45f4721b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R28\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c0a12e27363a72c44b40485896a0627b226165baaf56b2bd397f78cd1964a602__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R29\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_c55547b6f0665cc51e40102080acdf673c9dc04066820f1bbe0a1abe967e3c82__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 2)\n mstore(add(headStart, 64), \"R8\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R17\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R12\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_d7ddf5c7237b6fcbd18a81e0363800a2edd93e5d7694f12b68175c8be112382d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R20\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_d988122cca1ef6058e20807c88a9a00b3823e5269ddd73ccd1aae2ddbefd2d9e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 3)\n mstore(add(headStart, 64), \"R27\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_e6d47854c9a24d22ca7022dcfd2fd5f2bb6e30b687e6bebd6cd16e9f534a124b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 2)\n mstore(add(headStart, 64), \"R6\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_struct$_CollectParams_$125_memory_ptr__to_t_struct$_CollectParams_$125_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, mload(value0))\n mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), sub(shl(160, 1), 1)))\n let memberValue0 := mload(add(value0, 0x40))\n let _1 := 0xffffffffffffffffffffffffffffffff\n mstore(add(headStart, 0x40), and(memberValue0, _1))\n mstore(add(headStart, 0x60), and(mload(add(value0, 0x60)), _1))\n }\n function abi_encode_tuple_t_struct$_DecreaseLiquidityParams_$116_memory_ptr__to_t_struct$_DecreaseLiquidityParams_$116_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, mload(value0))\n mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), 0xffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 0x40), mload(add(value0, 0x40)))\n mstore(add(headStart, 0x60), mload(add(value0, 0x60)))\n mstore(add(headStart, 0x80), mload(add(value0, 0x80)))\n }\n function abi_encode_tuple_t_struct$_ExactInputSingleParams_$219_memory_ptr__to_t_struct$_ExactInputSingleParams_$219_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 256)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(mload(value0), _1))\n mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), _1))\n mstore(add(headStart, 0x40), and(mload(add(value0, 0x40)), 0xffffff))\n mstore(add(headStart, 0x60), and(mload(add(value0, 0x60)), _1))\n mstore(add(headStart, 0x80), mload(add(value0, 0x80)))\n mstore(add(headStart, 0xa0), mload(add(value0, 0xa0)))\n mstore(add(headStart, 0xc0), mload(add(value0, 0xc0)))\n mstore(add(headStart, 0xe0), and(mload(add(value0, 0xe0)), _1))\n }\n function abi_encode_tuple_t_struct$_IncreaseLiquidityParams_$105_memory_ptr__to_t_struct$_IncreaseLiquidityParams_$105_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 192)\n mstore(headStart, mload(value0))\n mstore(add(headStart, 0x20), mload(add(value0, 0x20)))\n mstore(add(headStart, 0x40), mload(add(value0, 0x40)))\n mstore(add(headStart, 0x60), mload(add(value0, 0x60)))\n mstore(add(headStart, 0x80), mload(add(value0, 0x80)))\n mstore(add(headStart, 0xa0), mload(add(value0, 0xa0)))\n }\n function abi_encode_tuple_t_struct$_MintParams_$92_memory_ptr__to_t_struct$_MintParams_$92_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 352)\n abi_encode_t_address(mload(value0), headStart)\n let memberValue0 := mload(add(value0, 0x20))\n abi_encode_t_address(memberValue0, add(headStart, 0x20))\n let memberValue0_1 := mload(add(value0, 0x40))\n abi_encode_t_uint24(memberValue0_1, add(headStart, 0x40))\n let memberValue0_2 := mload(add(value0, 0x60))\n abi_encode_t_int24(memberValue0_2, add(headStart, 0x60))\n let memberValue0_3 := mload(add(value0, 0x80))\n abi_encode_t_int24(memberValue0_3, add(headStart, 0x80))\n mstore(add(headStart, 0xa0), mload(add(value0, 0xa0)))\n mstore(add(headStart, 0xc0), mload(add(value0, 0xc0)))\n mstore(add(headStart, 0xe0), mload(add(value0, 0xe0)))\n let _1 := 0x0100\n mstore(add(headStart, _1), mload(add(value0, _1)))\n let _2 := 0x0120\n let memberValue0_4 := mload(add(value0, _2))\n abi_encode_t_address(memberValue0_4, add(headStart, _2))\n let _3 := 0x0140\n mstore(add(headStart, _3), mload(add(value0, _3)))\n }\n function abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffff))\n }\n function abi_encode_tuple_t_uint184__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(184, 1), 1)))\n }\n function abi_encode_tuple_t_uint184_t_int24_t_int24_t_uint24__to_t_uint184_t_int24_t_int24_t_uint24__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, and(value0, sub(shl(184, 1), 1)))\n mstore(add(headStart, 32), signextend(2, value1))\n mstore(add(headStart, 64), signextend(2, value2))\n mstore(add(headStart, 96), and(value3, 0xffffff))\n }\n function abi_encode_tuple_t_uint24__to_t_uint24__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffff))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function allocateMemory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n }\n function copy_memory_to_memory(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length) { mstore(add(dst, length), 0) }\n }\n function validator_revert_t_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function validator_revert_t_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function validator_revert_t_int24(value)\n {\n if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n }\n function validator_revert_t_uint16(value)\n {\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n }\n function validator_revert_t_uint24(value)\n {\n if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n }\n}", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "1481": [ + { + "length": 32, + "start": 1402 + }, + { + "length": 32, + "start": 2446 + }, + { + "length": 32, + "start": 2877 + }, + { + "length": 32, + "start": 3278 + }, + { + "length": 32, + "start": 3358 + }, + { + "length": 32, + "start": 3660 + }, + { + "length": 32, + "start": 3932 + }, + { + "length": 32, + "start": 4282 + }, + { + "length": 32, + "start": 5073 + }, + { + "length": 32, + "start": 5208 + }, + { + "length": 32, + "start": 5405 + }, + { + "length": 32, + "start": 5715 + }, + { + "length": 32, + "start": 5873 + }, + { + "length": 32, + "start": 6219 + }, + { + "length": 32, + "start": 6868 + }, + { + "length": 32, + "start": 7114 + }, + { + "length": 32, + "start": 7350 + }, + { + "length": 32, + "start": 7716 + }, + { + "length": 32, + "start": 8308 + }, + { + "length": 32, + "start": 8839 + }, + { + "length": 32, + "start": 8922 + }, + { + "length": 32, + "start": 9884 + }, + { + "length": 32, + "start": 10012 + }, + { + "length": 32, + "start": 10442 + }, + { + "length": 32, + "start": 10823 + }, + { + "length": 32, + "start": 10903 + }, + { + "length": 32, + "start": 11205 + }, + { + "length": 32, + "start": 11457 + }, + { + "length": 32, + "start": 11807 + }, + { + "length": 32, + "start": 13328 + }, + { + "length": 32, + "start": 13622 + }, + { + "length": 32, + "start": 14012 + }, + { + "length": 32, + "start": 15124 + }, + { + "length": 32, + "start": 16593 + }, + { + "length": 32, + "start": 18212 + } + ], + "1483": [ + { + "length": 32, + "start": 2585 + }, + { + "length": 32, + "start": 2911 + }, + { + "length": 32, + "start": 3395 + }, + { + "length": 32, + "start": 3815 + }, + { + "length": 32, + "start": 3895 + }, + { + "length": 32, + "start": 4197 + }, + { + "length": 32, + "start": 4441 + }, + { + "length": 32, + "start": 5125 + }, + { + "length": 32, + "start": 5166 + }, + { + "length": 32, + "start": 5459 + }, + { + "length": 32, + "start": 5783 + }, + { + "length": 32, + "start": 5831 + }, + { + "length": 32, + "start": 6500 + }, + { + "length": 32, + "start": 6555 + }, + { + "length": 32, + "start": 7397 + }, + { + "length": 32, + "start": 7633 + }, + { + "length": 32, + "start": 7674 + }, + { + "length": 32, + "start": 8539 + }, + { + "length": 32, + "start": 8585 + }, + { + "length": 32, + "start": 8880 + }, + { + "length": 32, + "start": 9053 + }, + { + "length": 32, + "start": 9948 + }, + { + "length": 32, + "start": 10171 + }, + { + "length": 32, + "start": 10476 + }, + { + "length": 32, + "start": 10940 + }, + { + "length": 32, + "start": 11340 + }, + { + "length": 32, + "start": 11420 + }, + { + "length": 32, + "start": 11722 + }, + { + "length": 32, + "start": 11966 + }, + { + "length": 32, + "start": 13392 + }, + { + "length": 32, + "start": 13703 + }, + { + "length": 32, + "start": 14059 + }, + { + "length": 32, + "start": 15197 + }, + { + "length": 32, + "start": 16627 + }, + { + "length": 32, + "start": 18246 + } + ], + "1485": [ + { + "length": 32, + "start": 2945 + }, + { + "length": 32, + "start": 3434 + }, + { + "length": 32, + "start": 3971 + }, + { + "length": 32, + "start": 7837 + }, + { + "length": 32, + "start": 10510 + }, + { + "length": 32, + "start": 10979 + }, + { + "length": 32, + "start": 11496 + }, + { + "length": 32, + "start": 14106 + }, + { + "length": 32, + "start": 16661 + }, + { + "length": 32, + "start": 18280 + } + ] + }, + "linkReferences": {}, + "object": "6080604052600436106101855760003560e01c806370e032b1116100d1578063a2d96f5f1161008a578063dd62ed3e11610064578063dd62ed3e14610455578063ddca3f4314610475578063f2fde38b14610497578063fdb5a03e146104b75761018c565b8063a2d96f5f14610400578063a9059cbb14610420578063d21220a7146104405761018c565b806370e032b1146103615780637cf134cb146103745780638da5cb5b146103965780638e005553146103ab57806395d89b41146103cb5780639f3e8b34146103e05761018c565b8063223b3b7a1161013e578063313ce56711610118578063313ce567146102df57806333bc230a146103015780634623c91d1461032157806370a08231146103415761018c565b8063223b3b7a1461027f57806323b872dd1461029f578063276cd920146102bf5761018c565b806306fdde0314610191578063095ea7b3146101bc5780630dfe1681146101e9578063135d4f241461020b578063157238661461022d57806318160ddd1461025d5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66104cc565b6040516101b3919061580f565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004615269565b610562565b6040516101b39190615804565b3480156101f557600080fd5b506101fe610578565b6040516101b39190615771565b34801561021757600080fd5b5061022b610226366004615294565b61059c565b005b34801561023957600080fd5b5061024d6102483660046155cb565b611231565b6040516101b39493929190615d53565b34801561026957600080fd5b50610272611280565b6040516101b39190615d92565b34801561028b57600080fd5b506101dc61029a36600461518c565b611286565b3480156102ab57600080fd5b506101dc6102ba3660046151fc565b61129b565b3480156102cb57600080fd5b5061022b6102da366004615459565b611306565b3480156102eb57600080fd5b506102f46114c2565b6040516101b39190615d9b565b34801561030d57600080fd5b5061022b61031c3660046153c7565b6114c7565b34801561032d57600080fd5b5061022b61033c36600461523c565b61175c565b34801561034d57600080fd5b5061027261035c36600461518c565b6117b1565b61022b61036f3660046153c7565b6117d0565b34801561038057600080fd5b50610389611e9b565b6040516101b39190615d82565b3480156103a257600080fd5b506101fe611ebf565b3480156103b757600080fd5b5061022b6103c636600461550f565b611ece565b3480156103d757600080fd5b506101a6611f16565b3480156103ec57600080fd5b506102726103fb36600461518c565b611f77565b34801561040c57600080fd5b5061022b61041b366004615459565b611f89565b34801561042c57600080fd5b506101dc61043b366004615269565b61234e565b34801561044c57600080fd5b506101fe61235b565b34801561046157600080fd5b506102726104703660046151c4565b61237f565b34801561048157600080fd5b5061048a6123aa565b6040516101b39190615d30565b3480156104a357600080fd5b5061022b6104b236600461518c565b6123b9565b3480156104c357600080fd5b5061022b612405565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b5050505050905090565b600061056f338484612f97565b50600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b336000818152602081905260409020544310156105d45760405162461bcd60e51b81526004016105cb90615842565b60405180910390fd5b6005546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105cb9061597f565b6040805160a08101825260045481526000602082018190529181019190915230606082015260001960808201526106348161304b565b50505060006008805480602002602001604051908101604052809291908181526020016000905b828210156106cf57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff16606082015282526001909201910161065b565b50505050905060005b81518110156107765773c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166342966c6883838151811061071057fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016107389190615d3f565b600060405180830381600087803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b5050600190920191506106d89050565b50610783600860006150b9565b60005b84518110156109735784818151811061079b57fe5b60200260200101516040015160020b8582815181106107b657fe5b60200260200101516020015160020b136107e25760405162461bcd60e51b81526004016105cb90615abb565b801561083f578460018203815181106107f757fe5b60200260200101516040015160020b85828151811061081257fe5b60200260200101516020015160020b131561083f5760405162461bcd60e51b81526004016105cb90615abb565b600085828151811061084d57fe5b60200260200101516060015162ffffff161161087b5760405162461bcd60e51b81526004016105cb9061599c565b84818151811061088757fe5b6020026020010151600001516001600160b81b03166000146108bb5760405162461bcd60e51b81526004016105cb90615946565b60088582815181106108c957fe5b60209081029190910181015182546001818101855560009485529383902082519101805493830151604084015160609094015162ffffff908116600160e81b026001600160e81b03600296870b8316600160d01b0262ffffff60d01b199490970b909216600160b81b0262ffffff60b81b196001600160b81b039096166001600160b81b031990981697909717949094169590951716929092179290921691909117905501610786565b506040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906109c3903090600401615771565b60206040518083038186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1391906155e3565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610a639190615771565b60206040518083038186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab391906155e3565b9050600080610afa6040518060c001604052808681526020018581526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152958290039594819003949193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290610ba9907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b158015610bc157600080fd5b505afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c3157600080fd5b505afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c69919061552b565b50505050505090508284028286021115610e8a57600082610caf610c9b86856001600160a01b0316600160601b613ba5565b846001600160a01b0316600160601b613ba5565b018486028488020381610cbe57fe5b049050610d096001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991610dea9190600401615bb4565b602060405180830381600087803b158015610e0457600080fd5b505af1925050508015610e34575060408051601f3d908101601f19168201909252610e31918101906155e3565b60015b610e3d57610e3f565b505b610e886001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b82840282860210156110a357600083610ec8610eb485600160601b866001600160a01b0316613ba5565b600160601b856001600160a01b0316613ba5565b018387028587020381610ed757fe5b049050610f226001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf389916110039190600401615bb4565b602060405180830381600087803b15801561101d57600080fd5b505af192505050801561104d575060408051601f3d908101601f1916820190925261104a918101906155e3565b60015b61105657611058565b505b6110a16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906110ef903090600401615771565b60206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f91906155e3565b6040516370a0823160e01b81529095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061118e903090600401615771565b60206040518083038186803b1580156111a657600080fd5b505afa1580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de91906155e3565b93506112226040518060c001604052808781526020018681526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b50505050505050505050505050565b6008818154811061124157600080fd5b6000918252602090912001546001600160b81b0381169150600160b81b8104600290810b91600160d01b810490910b90600160e81b900462ffffff1684565b60045490565b60036020526000908152604090205460ff1681565b60006112a8848484613d53565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112ec5760405162461bcd60e51b81526004016105cb906159d4565b6112f98533858403612f97565b60019150505b9392505050565b336000818152602081905260409020544310156113355760405162461bcd60e51b81526004016105cb90615842565b61133e33613e4f565b816080013542111561134f57600080fd5b6000808061136a6113653687900387018761546a565b61304b565b9194509250905061137c338635613e6e565b84602001358310156113a05760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156113c45760405162461bcd60e51b81526004016105cb90615a9e565b6113f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b61142c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df8386866040516114b393929190615d0f565b60405180910390a35050505050565b601290565b336000818152602081905260409020544310156114f65760405162461bcd60e51b81526004016105cb90615842565b6114ff33613e4f565b8160a0013542111561151057600080fd5b6115466001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308535613f50565b61157f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633306020860135613f50565b600080808061159b611596368890038801886153de565b613483565b9350935093509350816001600160801b0316600014156115cd576115c833826001600160801b0316613f77565b6115f5565b6115f5336115f0836001600160801b0316600454866001600160801b0316613ba5565b613f77565b85604001358410156116195760405162461bcd60e51b81526004016105cb906158f0565b856060013583101561163d5760405162461bcd60e51b81526004016105cb90615a9e565b853584101561167e5761167e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338835879003613f31565b82866020013511156116c5576116c56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016336020890135869003613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be83878760405161174c93929190615d0f565b60405180910390a3505050505050565b6005546001600160a01b031633146117865760405162461bcd60e51b81526004016105cb9061597f565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600160205260409020545b919050565b60095460ff16156117f35760405162461bcd60e51b81526004016105cb90615929565b6009805460ff191660011790553360008181526020819052604090205443101561182f5760405162461bcd60e51b81526004016105cb90615842565b61183833613e4f565b8160a0013542111561184957600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156119995781353411156118cc5760405133908335340380156108fc02916000818181858888f193505050501580156118c6573d6000803e3d6000fd5b506118ec565b348235146118ec5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083600001356040518263ffffffff1660e01b81526004016000604051808303818588803b15801561193f57600080fd5b505af1158015611953573d6000803e3d6000fd5b506119949350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050306020860135613f50565b611b01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146119f55760405162461bcd60e51b81526004016105cb906158d3565b8160200135341115611a395760405133906020840135340380156108fc02916000818181858888f19350505050158015611a33573d6000803e3d6000fd5b50611a5c565b81602001353414611a5c5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083602001356040518263ffffffff1660e01b81526004016000604051808303818588803b158015611aaf57600080fd5b505af1158015611ac3573d6000803e3d6000fd5b50611b019350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050308535613f50565b6000808080611b18611596368890038801886153de565b9350935093509350816001600160801b031660001415611b4a57611b4533826001600160801b0316613f77565b611b6d565b611b6d336115f0836001600160801b0316600454866001600160801b0316613ba5565b8560400135841015611b915760405162461bcd60e51b81526004016105cb906158f0565b8560600135831015611bb55760405162461bcd60e51b81526004016105cb90615a9e565b853584900360208701358490038115611cdd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611ca957604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611c44908590600401615d92565b600060405180830381600087803b158015611c5e57600080fd5b505af1158015611c72573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015611ca3573d6000803e3d6000fd5b50611cdd565b611cdd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b8015611df8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611dc457604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611d5f908490600401615d92565b600060405180830381600087803b158015611d7957600080fd5b505af1158015611d8d573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611dbe573d6000803e3d6000fd5b50611df8565b611df86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be858989604051611e7f93929190615d0f565b60405180910390a350506009805460ff19169055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6005546001600160a01b031690565b6005546001600160a01b03163314611ef85760405162461bcd60e51b81526004016105cb9061597f565b6009805461ffff9092166101000262ffff0019909216919091179055565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b60006020819052908152604090205481565b60095460ff1615611fac5760405162461bcd60e51b81526004016105cb90615929565b6009805460ff1916600117905533600081815260208190526040902054431015611fe85760405162461bcd60e51b81526004016105cb90615842565b611ff133613e4f565b816080013542111561200257600080fd5b600080806120186113653687900387018761546a565b9194509250905061202a338635613e6e565b846020013583101561204e5760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156120725760405162461bcd60e51b81526004016105cb90615a9e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2141561218757604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906120ee908690600401615d92565b600060405180830381600087803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f1935050505015801561214d573d6000803e3d6000fd5b506121826001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b6122ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146121e35760405162461bcd60e51b81526004016105cb906158d3565b604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d9061221a908590600401615d92565b600060405180830381600087803b15801561223457600080fd5b505af1158015612248573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015612279573d6000803e3d6000fd5b506122ae6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df83868660405161233593929190615d0f565b60405180910390a350506009805460ff19169055505050565b600061056f338484613d53565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600954610100900461ffff1681565b6005546001600160a01b031633146123e35760405162461bcd60e51b81526004016105cb9061597f565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526003602052604090205460ff166124345760405162461bcd60e51b81526004016105cb9061585f565b336000818152602081905260409020544310156124635760405162461bcd60e51b81526004016105cb90615842565b60006008805480602002602001604051908101604052809291908181526020016000905b828210156124fb57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101612487565b505050509050600080600080600090505b84518110156126695784818151811061252157fe5b6020026020010151600001516001600160b81b0316600014156125565760405162461bcd60e51b81526004016105cb90615ad8565b84818151811061256257fe5b60200260200101516060015162ffffff168401935060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808a87815181106125b457fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526126069190600401615b2e565b6040805180830381600087803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126579190615636565b9501949390930192505060010161250c565b5060095461271061010090910461ffff16838102829004919083020481156126c5576005546126c5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561270557600554612705906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612751903090600401615771565b60206040518083038186803b15801561276957600080fd5b505afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a191906155e3565b6040516370a0823160e01b81529094506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906127f0903090600401615771565b60206040518083038186803b15801561280857600080fd5b505afa15801561281c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284091906155e3565b92506000806128876040518060c001604052808881526020018781526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152978290039796819003969193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290612936907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561294e57600080fd5b505afa158015612962573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298691906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156129be57600080fd5b505afa1580156129d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f6919061552b565b50505050505090508286028288021115612c0357600082612a28610c9b86856001600160a01b0316600160601b613ba5565b01848802848a020381612a3757fe5b049050612a826001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612b639190600401615bb4565b602060405180830381600087803b158015612b7d57600080fd5b505af1925050508015612bad575060408051601f3d908101601f19168201909252612baa918101906155e3565b60015b612bb657612bb8565b505b612c016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b8286028288021015612e0857600083612c2d610eb485600160601b866001600160a01b0316613ba5565b018389028589020381612c3c57fe5b049050612c876001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612d689190600401615bb4565b602060405180830381600087803b158015612d8257600080fd5b505af1925050508015612db2575060408051601f3d908101601f19168201909252612daf918101906155e3565b60015b612dbb57612dbd565b505b612e066001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612e54903090600401615771565b60206040518083038186803b158015612e6c57600080fd5b505afa158015612e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea491906155e3565b6040516370a0823160e01b81529097506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612ef3903090600401615771565b60206040518083038186803b158015612f0b57600080fd5b505afa158015612f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4391906155e3565b9550612f876040518060c001604052808981526020018881526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050505050505050505050505050565b6001600160a01b038316612fbd5760405162461bcd60e51b81526004016105cb90615a48565b6001600160a01b038216612fe35760405162461bcd60e51b81526004016105cb90615a65565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061303e908590615d92565b60405180910390a3505050565b6000806000806008805480602002602001604051908101604052809291908181526020016000905b828210156130e757600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101613073565b50505050905060008060005b83518161ffff1610156133dc57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab88868461ffff168151811061313557fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161315d9190615d3f565b6101806040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ae9190615659565b5050505097505050505050505060006131d7826001600160801b03168b60000151600454613ba5565b905060006040518060a00160405280888661ffff16815181106131f657fe5b6020026020010151600001516001600160b81b03168152602001836001600160801b0316815260200160008152602001600081526020018c60800151815250905060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b0316630c49ccbe846040518263ffffffff1660e01b815260040161327a9190615b71565b6040805180830381600087803b15801561329357600080fd5b505af11580156132a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cb9190615636565b9150915060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808e8c61ffff168151811061331057fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526133629190600401615b2e565b6040805180830381600087803b15801561337b57600080fd5b505af115801561338f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b39190615636565b9e85019e9d84019d9c9096019b93909503989098019750900394909401935050506001016130f3565b5060095461271061010090910461ffff16928302819004929190910204811561343957600554613439906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561347957600554613479906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b5050509193909250565b60008060008060006008805480602002602001604051908101604052809291908181526020016000905b8282101561352157600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff1660608201528252600190920191016134ad565b50508851929350613574926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925073c36442b4a4522e871399cd717abdd847ab11fe889150613c54565b60208601516135c3906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169073c36442b4a4522e871399cd717abdd847ab11fe8890613c54565b6000806000835167ffffffffffffffff811180156135e057600080fd5b5060405190808252806020026020018201604052801561360a578160200160208202803683370190505b5090506000845167ffffffffffffffff8111801561362757600080fd5b50604051908082528060200260200182016040528015613651578160200160208202803683370190505b50905061365d8561400a565b919a509296509094509092509050831580159061367a5750600083115b1561369c57613696858b600001518c60200151878787876146d3565b90945092505b60005b85518161ffff161015613b065760006040518061016001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff168152602001888461ffff168151811061375357fe5b60200260200101516040015160020b8152602001888461ffff168151811061377757fe5b60200260200101516020015160020b815260200160008152602001600081526020016000815260200160008152602001306001600160a01b031681526020018d60a00151815250905060006040518060c00160405280898561ffff16815181106137dd57fe5b6020026020010151600001516001600160b81b03168152602001600081526020016000815260200160008152602001600081526020018e60a00151815250905060008711156138815761384c8d60000151868561ffff168151811061383e57fe5b602002602001015189613ba5565b60a08301819052602082015260408d015185516138749190879061ffff871690811061383e57fe5b60e0830181905260608201525b85156138e3576138ad8d60200151858561ffff168151811061389f57fe5b602002602001015188613ba5565b60c08301819052604082015260608d015184516138d59190869061ffff871690811061389f57fe5b610100830181905260808201525b60008260a0015111806138fa575060008260c00151115b15613afc576139076150da565b888461ffff168151811061391757fe5b6020026020010151600001516001600160b81b031660001415613a3957604051634418b22b60e11b815273c36442b4a4522e871399cd717abdd847ab11fe889063883164569061396b908690600401615c61565b608060405180830381600087803b15801561398557600080fd5b505af19250505080156139b5575060408051601f3d908101601f191682019092526139b2918101906155fb565b60015b6139be576139dc565b9284526001600160801b039091166020840152604083015260608201525b80516008805461ffff87169081106139f057fe5b60009182526020918290200180546001600160b81b0319166001600160b81b03939093169290921790915560408201516060830151918301519e019d9c019b9990990198613afa565b60405163219f5d1760e01b815273c36442b4a4522e871399cd717abdd847ab11fe889063219f5d1790613a70908590600401615c1d565b606060405180830381600087803b158015613a8a57600080fd5b505af1925050508015613aba575060408051601f3d908101601f19168201909252613ab7918101906154db565b60015b613ac357613ade565b6001600160801b039092166020840152604083015260608201525b80604001518d019c5080606001518c019b5080602001518a0199505b505b505060010161369f565b50613b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b613b996001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b50505050509193509193565b6000808060001985870986860292508281109083900303905080613bdb5760008411613bd057600080fd5b5082900490506112ff565b808411613be757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b801580613cdc5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90613c8a9030908690600401615785565b60206040518083038186803b158015613ca257600080fd5b505afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda91906155e3565b155b613cf85760405162461bcd60e51b81526004016105cb90615b12565b613d4e8363095ea7b360e01b8484604051602401613d179291906157eb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a9c565b505050565b6001600160a01b038316613d795760405162461bcd60e51b81526004016105cb9061587c565b6001600160a01b038216613d9f5760405162461bcd60e51b81526004016105cb90615899565b613daa838383613d4e565b6001600160a01b03831660009081526001602052604090205481811015613de35760405162461bcd60e51b81526004016105cb90615a0e565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e41908690615d92565b60405180910390a350505050565b6001600160a01b03166000908152602081905260409020436001019055565b6001600160a01b038216613e945760405162461bcd60e51b81526004016105cb90615a2b565b613ea082600083613d4e565b6001600160a01b03821660009081526001602052604090205481811015613ed95760405162461bcd60e51b81526004016105cb90615af5565b6001600160a01b0383166000818152600160205260408082208585039055600480548690039055519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061303e908690615d92565b613d4e8363a9059cbb60e01b8484604051602401613d179291906157eb565b613f71846323b872dd60e01b858585604051602401613d17939291906157c7565b50505050565b6001600160a01b038216613f9d5760405162461bcd60e51b81526004016105cb906158b6565b613fa960008383613d4e565b60048054820190556001600160a01b038216600081815260016020526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613ffe908590615d92565b60405180910390a35050565b6000806000606080855167ffffffffffffffff8111801561402a57600080fd5b50604051908082528060200260200182016040528015614054578160200160208202803683370190505b509150855167ffffffffffffffff8111801561406f57600080fd5b50604051908082528060200260200182016040528015614099578160200160208202803683370190505b50604051630b4c774160e11b81529091506000908190731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061413d907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561415557600080fd5b505afa158015614169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418d91906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156141c557600080fd5b505afa1580156141d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141fd919061552b565b50505050509150915061420e61510b565b6000806142328b60008151811061422157fe5b602002602001015160400151614b10565b6001600160a01b031683528a5161425f908c9060009061424e57fe5b602002602001015160200151614b10565b6001600160a01b031660208401528a518b9060009061427a57fe5b60200260200101516060015162ffffff1691508a60018c51038151811061429d57fe5b60200260200101516060015162ffffff16905060005b8b518161ffff1610156146c45760008c8261ffff16815181106142d257fe5b6020026020010151600001516001600160b81b031611156143af57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab888e8461ffff168151811061432257fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161434a9190615d3f565b6101806040518083038186803b15801561436357600080fd5b505afa158015614377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439b9190615659565b50505050975050505050505050808a019950505b6143b761510b565b6143ca8d8361ffff168151811061422157fe5b6001600160a01b031681528c516143eb908e9061ffff851690811061424e57fe5b6001600160a01b031660208201528c518d9061ffff841690811061440b57fe5b60200260200101516040015160020b8660020b136144cb57838d8361ffff168151811061443457fe5b60200260200101516060015162ffffff1661448561447861446889600001518a602001518b600001518c6020015103613ba5565b8551602087015190810390613ba5565b8451600160601b90613ba5565b028161448d57fe5b04898361ffff168151811061449e57fe5b602002602001018181525050888261ffff16815181106144ba57fe5b60200260200101518c019b506146bb565b8c8261ffff16815181106144db57fe5b60200260200101516020015160020b8660020b1261457e57828d8361ffff168151811061450457fe5b60200260200101516060015162ffffff166145388360000151846020015103600160601b89600001518a6020015103613ba5565b028161454057fe5b04888361ffff168151811061455157fe5b602002602001018181525050878261ffff168151811061456d57fe5b60200260200101518b019a506146bb565b838d8361ffff168151811061458f57fe5b60200260200101516060015162ffffff166145ee6145da6145c389600001518a602001518b600001518c6020015103613ba5565b60208601516001600160a01b038d16810390613ba5565b600160601b8b6001600160a01b0316613ba5565b02816145f657fe5b04898361ffff168151811061460757fe5b602002602001018181525050828d8361ffff168151811061462457fe5b60200260200101516060015162ffffff1661465d83600001518a6001600160a01b031603600160601b89600001518a6020015103613ba5565b028161466557fe5b04888361ffff168151811061467657fe5b602002602001018181525050888261ffff168151811061469257fe5b60200260200101518c019b50878261ffff16815181106146ae57fe5b60200260200101518b019a505b506001016142b3565b50505050505091939590929450565b6000808851600114156146ea575084905083614a90565b6146f261510b565b604051630b4c774160e11b8152600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290614790907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b1580156147a857600080fd5b505afa1580156147bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e091906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561481857600080fd5b505afa15801561482c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614850919061552b565b50505050505090506148b18161486c8d60008151811061422157fe5b61487c8e60008151811061424e57fe5b61489b8e8b60008151811061488d57fe5b60200260200101518e613ba5565b6148ac8e8b60008151811061488d57fe5b614e29565b6001600160801b031682528a516000198101906149179083906148da908f908590811061422157fe5b6148e98f858151811061424e57fe5b6149078f8c87815181106148f957fe5b60200260200101518f613ba5565b6148ac8f8c88815181106148f957fe5b6001600160801b031660208401528b518c9060009061493257fe5b60200260200101516060015162ffffff168360200151028c828151811061495557fe5b60200260200101516060015162ffffff168460000151021115614a025760008c60008151811061498157fe5b60200260200101516060015162ffffff1684602001510211156149f5576149ee898d83815181106149ae57fe5b60200260200101516060015162ffffff168560000151028e6000815181106149d257fe5b60200260200101516060015162ffffff16866020015102613ba5565b94506149fa565b600094505b879350614a8c565b88945060008c8281518110614a1357fe5b60200260200101516060015162ffffff168460000151021115614a8757614a80888d600081518110614a4157fe5b60200260200101516060015162ffffff168560200151028e8481518110614a6457fe5b60200260200101516060015162ffffff16866000015102613ba5565b9350614a8c565b600093505b5050505b97509795505050505050565b6000614ad68260405180604001604052806002815260200161523760f01b815250856001600160a01b0316614eed9092919063ffffffff16565b805190915015613d4e5780806020019051810190614af491906153ab565b613d4e5760405162461bcd60e51b81526004016105cb90615a82565b60008060008360020b12614b27578260020b614b2f565b8260020b6000035b9050620d89e8811115614b545760405162461bcd60e51b81526004016105cb906159b9565b600060018216614b6857600160801b614b7a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614bae576ffff97272373d413259a46990580e213a0260801c5b6004821615614bcd576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614bec576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614c0b576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614c2a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614c49576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614c68576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614c88576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614ca8576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614cc8576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614ce8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614d08576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614d28576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614d48576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614d68576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614d89576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614da9576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614dc8576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614de5576b048a170391f7dc42444e8fa20260801c5b60008460020b1315614e00578060001981614dfc57fe5b0490505b640100000000810615614e14576001614e17565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614e49579293925b846001600160a01b0316866001600160a01b031611614e7457614e6d858585614f04565b9050614ee4565b836001600160a01b0316866001600160a01b03161015614ed6576000614e9b878686614f04565b90506000614eaa878986614f67565b9050806001600160801b0316826001600160801b031610614ecb5780614ecd565b815b92505050614ee4565b614ee1858584614f67565b90505b95945050505050565b6060614efc8484600085614fa4565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614f24579192915b6000614f47856001600160a01b0316856001600160a01b0316600160601b613ba5565b9050614ee4614f6284838888036001600160a01b0316613ba5565b615064565b6000826001600160a01b0316846001600160a01b03161115614f87579192915b614efc614f6283600160601b8787036001600160a01b0316613ba5565b606082471015614fc65760405162461bcd60e51b81526004016105cb9061590d565b614fcf8561507a565b614feb5760405162461bcd60e51b81526004016105cb90615963565b600080866001600160a01b031685876040516150079190615755565b60006040518083038185875af1925050503d8060008114615044576040519150601f19603f3d011682016040523d82523d6000602084013e615049565b606091505b5091509150615059828286615080565b979650505050505050565b806001600160801b03811681146117cb57600080fd5b3b151590565b6060831561508f5750816112ff565b82511561509f5782518084602001fd5b8160405162461bcd60e51b81526004016105cb919061580f565b50805460008255906000526020600020908101906150d79190615125565b50565b60405180608001604052806000815260200160006001600160801b0316815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b5b8082111561513a5760008155600101615126565b5090565b80516117cb81615df9565b80356117cb81615e1c565b80516117cb81615e1c565b80516001600160801b03811681146117cb57600080fd5b80356117cb81615e3b565b80516117cb81615e3b565b60006020828403121561519d578081fd5b81356112ff81615df9565b6000602082840312156151b9578081fd5b81516112ff81615df9565b600080604083850312156151d6578081fd5b82356151e181615df9565b915060208301356151f181615df9565b809150509250929050565b600080600060608486031215615210578081fd5b833561521b81615df9565b9250602084013561522b81615df9565b929592945050506040919091013590565b6000806040838503121561524e578182fd5b823561525981615df9565b915060208301356151f181615e0e565b6000806040838503121561527b578182fd5b823561528681615df9565b946020939093013593505050565b600060208083850312156152a6578182fd5b823567ffffffffffffffff808211156152bd578384fd5b818501915085601f8301126152d0578384fd5b8135818111156152dc57fe5b6152e98485830201615da9565b818152848101908486016080808502870188018b1015615307578889fd5b8896505b8487101561539c5780828c031215615321578889fd5b60408051828101818110898211171561533657fe5b825283356001600160b81b038116811461534e578b8cfd5b8152838a013561535d81615e1c565b818b015261536c848301615149565b828201526060915061537f828501615176565b91810191909152845260019690960195928701929081019061530b565b50909998505050505050505050565b6000602082840312156153bc578081fd5b81516112ff81615e0e565b600060c082840312156153d8578081fd5b50919050565b600060c082840312156153ef578081fd5b60405160c0810181811067ffffffffffffffff8211171561540c57fe5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013561544181615df9565b608082015260a0928301359281019290925250919050565b600060a082840312156153d8578081fd5b600060a0828403121561547b578081fd5b60405160a0810181811067ffffffffffffffff8211171561549857fe5b806040525082358152602083013560208201526040830135604082015260608301356154c381615df9565b60608201526080928301359281019290925250919050565b6000806000606084860312156154ef578081fd5b6154f88461515f565b925060208401519150604084015190509250925092565b600060208284031215615520578081fd5b81356112ff81615e2b565b600080600080600080600060e0888a031215615545578485fd5b875161555081615df9565b602089015190975061556181615e1c565b604089015190965061557281615e2b565b606089015190955061558381615e2b565b608089015190945061559481615e2b565b60a089015190935060ff811681146155aa578283fd5b60c08901519092506155bb81615e0e565b8091505092959891949750929550565b6000602082840312156155dc578081fd5b5035919050565b6000602082840312156155f4578081fd5b5051919050565b60008060008060808587031215615610578182fd5b845193506156206020860161515f565b6040860151606090960151949790965092505050565b60008060408385031215615648578182fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f03121561567b578586fd5b8c516bffffffffffffffffffffffff81168114615696578687fd5b9b506156a460208e0161513e565b9a506156b260408e0161513e565b99506156c060608e0161513e565b98506156ce60808e01615181565b97506156dc60a08e01615154565b96506156ea60c08e01615154565b95506156f860e08e0161515f565b94506101008d015193506101208d015192506157176101408e0161515f565b91506157266101608e0161515f565b90509295989b509295989b509295989b565b6001600160a01b03169052565b60020b9052565b62ffffff169052565b60008251615767818460208701615dcd565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252825180602084015261582e816040850160208701615dcd565b601f01601f19169190910160400192915050565b60208082526003908201526205233360ec1b604082015260600190565b60208082526003908201526252313360e81b604082015260600190565b60208082526003908201526229191960e91b604082015260600190565b60208082526003908201526252323360e81b604082015260600190565b60208082526003908201526252323560e81b604082015260600190565b60208082526003908201526252313960e81b604082015260600190565b60208082526003908201526229189b60e91b604082015260600190565b602080825260029082015261148d60f21b604082015260600190565b602080825260039082015262148c4d60ea1b604082015260600190565b60208082526003908201526252313160e81b604082015260600190565b602080825260029082015261523560f01b604082015260600190565b60208082526003908201526252323160e81b604082015260600190565b60208082526003908201526205231360ec1b604082015260600190565b6020808252600190820152601560fa1b604082015260600190565b60208082526003908201526252313560e81b604082015260600190565b6020808252600390820152620a462760eb1b604082015260600190565b602080825260039082015262148c8d60ea1b604082015260600190565b60208082526003908201526229191b60e91b604082015260600190565b6020808252600390820152620a464760eb1b604082015260600190565b60208082526003908201526252323960e81b604082015260600190565b6020808252600290820152610a4760f31b604082015260600190565b60208082526003908201526252313760e81b604082015260600190565b60208082526003908201526229189960e91b604082015260600190565b60208082526003908201526205232360ec1b604082015260600190565b60208082526003908201526252323760e81b604082015260600190565b602080825260029082015261291b60f11b604082015260600190565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b600060a082019050825182526001600160801b03602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c0808401519083015260e09283015116918101919091526101000190565b600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b600061016082019050615c75828451615738565b6020830151615c876020840182615738565b506040830151615c9a604084018261574c565b506060830151615cad6060840182615745565b506080830151615cc06080840182615745565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615cfe82850182615738565b505061014092830151919092015290565b6001600160801b039390931683526020830191909152604082015260600190565b61ffff91909116815260200190565b6001600160b81b0391909116815260200190565b6001600160b81b03949094168452600292830b6020850152910b604083015262ffffff16606082015260800190565b62ffffff91909116815260200190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715615dc557fe5b604052919050565b60005b83811015615de8578181015183820152602001615dd0565b83811115613f715750506000910152565b6001600160a01b03811681146150d757600080fd5b80151581146150d757600080fd5b8060020b81146150d757600080fd5b61ffff811681146150d757600080fd5b62ffffff811681146150d757600080fdfea2646970667358221220e16fb29af291438b541627e21439b7cad8698cb0a4ade27e0e568ca5d67d489964736f6c63430007060033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x185 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70E032B1 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA2D96F5F GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x475 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0xFDB5A03E EQ PUSH2 0x4B7 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0xA2D96F5F EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x420 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x440 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x70E032B1 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0x7CF134CB EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x8E005553 EQ PUSH2 0x3AB JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x9F3E8B34 EQ PUSH2 0x3E0 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x223B3B7A GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0x118 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x33BC230A EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x4623C91D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x341 JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x223B3B7A EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0x276CD920 EQ PUSH2 0x2BF JUMPI PUSH2 0x18C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1BC JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x135D4F24 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x15723866 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x25D JUMPI PUSH2 0x18C JUMP JUMPDEST CALLDATASIZE PUSH2 0x18C JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A6 PUSH2 0x4CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x580F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x1D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x5269 JUMP JUMPDEST PUSH2 0x562 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5804 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x578 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5771 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x5294 JUMP JUMPDEST PUSH2 0x59C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x248 CALLDATASIZE PUSH1 0x4 PUSH2 0x55CB JUMP JUMPDEST PUSH2 0x1231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x1280 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x1286 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x2BA CALLDATASIZE PUSH1 0x4 PUSH2 0x51FC JUMP JUMPDEST PUSH2 0x129B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x2DA CALLDATASIZE PUSH1 0x4 PUSH2 0x5459 JUMP JUMPDEST PUSH2 0x1306 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH2 0x14C2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D9B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x53C7 JUMP JUMPDEST PUSH2 0x14C7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x523C JUMP JUMPDEST PUSH2 0x175C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x35C CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x17B1 JUMP JUMPDEST PUSH2 0x22B PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x53C7 JUMP JUMPDEST PUSH2 0x17D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x389 PUSH2 0x1E9B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D82 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x1EBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x550F JUMP JUMPDEST PUSH2 0x1ECE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A6 PUSH2 0x1F16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x1F77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x5459 JUMP JUMPDEST PUSH2 0x1F89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0x5269 JUMP JUMPDEST PUSH2 0x234E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FE PUSH2 0x235B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x272 PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x51C4 JUMP JUMPDEST PUSH2 0x237F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48A PUSH2 0x23AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x5D30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x4B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x518C JUMP JUMPDEST PUSH2 0x23B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x22B PUSH2 0x2405 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x558 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x52D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x558 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x53B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F CALLER DUP5 DUP5 PUSH2 0x2F97 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x5FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x4 SLOAD DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x634 DUP2 PUSH2 0x304B JUMP JUMPDEST POP POP POP PUSH1 0x0 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x6CF JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x65B JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x776 JUMPI PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x42966C68 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x710 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x738 SWAP2 SWAP1 PUSH2 0x5D3F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x752 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x766 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x6D8 SWAP1 POP JUMP JUMPDEST POP PUSH2 0x783 PUSH1 0x8 PUSH1 0x0 PUSH2 0x50B9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x973 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x79B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x7E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5ABB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x83F JUMPI DUP5 PUSH1 0x1 DUP3 SUB DUP2 MLOAD DUP2 LT PUSH2 0x7F7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x812 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x83F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5ABB JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x84D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND GT PUSH2 0x87B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x599C JUMP JUMPDEST DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x887 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND PUSH1 0x0 EQ PUSH2 0x8BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5946 JUMP JUMPDEST PUSH1 0x8 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8C9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP6 SSTORE PUSH1 0x0 SWAP5 DUP6 MSTORE SWAP4 DUP4 SWAP1 KECCAK256 DUP3 MLOAD SWAP2 ADD DUP1 SLOAD SWAP4 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB PUSH1 0x2 SWAP7 DUP8 SIGNEXTEND DUP4 AND PUSH1 0x1 PUSH1 0xD0 SHL MUL PUSH3 0xFFFFFF PUSH1 0xD0 SHL NOT SWAP5 SWAP1 SWAP8 SIGNEXTEND SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0xB8 SHL MUL PUSH3 0xFFFFFF PUSH1 0xB8 SHL NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB NOT SWAP1 SWAP9 AND SWAP8 SWAP1 SWAP8 OR SWAP5 SWAP1 SWAP5 AND SWAP6 SWAP1 SWAP6 OR AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE ADD PUSH2 0x786 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x9C3 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA13 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA63 SWAP2 SWAP1 PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA8F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAB3 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0xAFA PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE SWAP6 DUP3 SWAP1 SUB SWAP6 SWAP5 DUP2 SWAP1 SUB SWAP5 SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0xBA9 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBF9 SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC69 SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP DUP3 DUP5 MUL DUP3 DUP7 MUL GT ISZERO PUSH2 0xE8A JUMPI PUSH1 0x0 DUP3 PUSH2 0xCAF PUSH2 0xC9B DUP7 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP5 DUP7 MUL DUP5 DUP9 MUL SUB DUP2 PUSH2 0xCBE JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xD09 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0xDEA SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE34 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE31 SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xE3D JUMPI PUSH2 0xE3F JUMP JUMPDEST POP JUMPDEST PUSH2 0xE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST DUP3 DUP5 MUL DUP3 DUP7 MUL LT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x0 DUP4 PUSH2 0xEC8 PUSH2 0xEB4 DUP6 PUSH1 0x1 PUSH1 0x60 SHL DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP4 DUP8 MUL DUP6 DUP8 MUL SUB DUP2 PUSH2 0xED7 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xF22 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x1003 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x101D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x104D JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x104A SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1056 JUMPI PUSH2 0x1058 JUMP JUMPDEST POP JUMPDEST PUSH2 0x10A1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x10EF SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1107 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x111B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x113F SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP6 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x118E SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11DE SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1222 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x8 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0xD0 SHL DUP2 DIV SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND DUP5 JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12A8 DUP5 DUP5 DUP5 PUSH2 0x3D53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x12EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59D4 JUMP JUMPDEST PUSH2 0x12F9 DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x2F97 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x1335 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x133E CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0x80 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x134F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x136A PUSH2 0x1365 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x546A JUMP JUMPDEST PUSH2 0x304B JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x137C CALLER DUP7 CALLDATALOAD PUSH2 0x3E6E JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x13A0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST PUSH2 0x13F8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP6 PUSH2 0x3F31 JUMP JUMPDEST PUSH2 0x142C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP5 PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF56FDA5B6BB8F75F807E6A868835D0A42A72BE51A6F15FD874ACDD3CBE3087DF DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x14B3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x14FF CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0xA0 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x1510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1546 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS DUP6 CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH2 0x157F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER ADDRESS PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x159B PUSH2 0x1596 CALLDATASIZE DUP9 SWAP1 SUB DUP9 ADD DUP9 PUSH2 0x53DE JUMP JUMPDEST PUSH2 0x3483 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x15CD JUMPI PUSH2 0x15C8 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x15F5 CALLER PUSH2 0x15F0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x4 SLOAD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x3F77 JUMP JUMPDEST DUP6 PUSH1 0x40 ADD CALLDATALOAD DUP5 LT ISZERO PUSH2 0x1619 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP6 PUSH1 0x60 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x163D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST DUP6 CALLDATALOAD DUP5 LT ISZERO PUSH2 0x167E JUMPI PUSH2 0x167E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP9 CALLDATALOAD DUP8 SWAP1 SUB PUSH2 0x3F31 JUMP JUMPDEST DUP3 DUP7 PUSH1 0x20 ADD CALLDATALOAD GT ISZERO PUSH2 0x16C5 JUMPI PUSH2 0x16C5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER PUSH1 0x20 DUP10 ADD CALLDATALOAD DUP7 SWAP1 SUB PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF1CC7B6DD2DA0338FC327EE7647AEB5E744F007A5BBF0628A0033C6B5FFAF0BE DUP4 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x174C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1786 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x17F3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x182F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x1838 CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0xA0 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x1849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x1999 JUMPI DUP2 CALLDATALOAD CALLVALUE GT ISZERO PUSH2 0x18CC JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 DUP4 CALLDATALOAD CALLVALUE SUB DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x18C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x18EC JUMP JUMPDEST CALLVALUE DUP3 CALLDATALOAD EQ PUSH2 0x18EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59F1 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1953 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1994 SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP CALLER SWAP1 POP ADDRESS PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH2 0x1B01 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ PUSH2 0x19F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58D3 JUMP JUMPDEST DUP2 PUSH1 0x20 ADD CALLDATALOAD CALLVALUE GT ISZERO PUSH2 0x1A39 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 PUSH1 0x20 DUP5 ADD CALLDATALOAD CALLVALUE SUB DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1A33 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1A5C JUMP JUMPDEST DUP2 PUSH1 0x20 ADD CALLDATALOAD CALLVALUE EQ PUSH2 0x1A5C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59F1 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1B01 SWAP4 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 POP CALLER SWAP1 POP ADDRESS DUP6 CALLDATALOAD PUSH2 0x3F50 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1B18 PUSH2 0x1596 CALLDATASIZE DUP9 SWAP1 SUB DUP9 ADD DUP9 PUSH2 0x53DE JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x1B4A JUMPI PUSH2 0x1B45 CALLER DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x1B6D JUMP JUMPDEST PUSH2 0x1B6D CALLER PUSH2 0x15F0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x4 SLOAD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST DUP6 PUSH1 0x40 ADD CALLDATALOAD DUP5 LT ISZERO PUSH2 0x1B91 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP6 PUSH1 0x60 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x1BB5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST DUP6 CALLDATALOAD DUP5 SWAP1 SUB PUSH1 0x20 DUP8 ADD CALLDATALOAD DUP5 SWAP1 SUB DUP2 ISZERO PUSH2 0x1CDD JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x1CA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1C44 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP5 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP5 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1CA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1CDD JUMP JUMPDEST PUSH2 0x1CDD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP5 PUSH2 0x3F31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DF8 JUMPI PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x1DC4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1D5F SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1DBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x1DF8 JUMP JUMPDEST PUSH2 0x1DF8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP4 PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF1CC7B6DD2DA0338FC327EE7647AEB5E744F007A5BBF0628A0033C6B5FFAF0BE DUP6 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1E7F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1EF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH2 0xFFFF SWAP1 SWAP3 AND PUSH2 0x100 MUL PUSH3 0xFFFF00 NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x558 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x52D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x558 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1FAC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5929 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x1FE8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH2 0x1FF1 CALLER PUSH2 0x3E4F JUMP JUMPDEST DUP2 PUSH1 0x80 ADD CALLDATALOAD TIMESTAMP GT ISZERO PUSH2 0x2002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2018 PUSH2 0x1365 CALLDATASIZE DUP8 SWAP1 SUB DUP8 ADD DUP8 PUSH2 0x546A JUMP JUMPDEST SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x202A CALLER DUP7 CALLDATALOAD PUSH2 0x3E6E JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD DUP4 LT ISZERO PUSH2 0x204E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58F0 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD CALLDATALOAD DUP3 LT ISZERO PUSH2 0x2072 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A9E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ ISZERO PUSH2 0x2187 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x20EE SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x211C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP6 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP6 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x214D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x2182 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP5 PUSH2 0x3F31 JUMP JUMPDEST PUSH2 0x22AE JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 EQ PUSH2 0x21E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x221A SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2248 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER SWAP3 POP DUP5 ISZERO PUSH2 0x8FC MUL SWAP2 POP DUP5 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x22AE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND CALLER DUP6 PUSH2 0x3F31 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xF56FDA5B6BB8F75F807E6A868835D0A42A72BE51A6F15FD874ACDD3CBE3087DF DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2335 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5D0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x56F CALLER DUP5 DUP5 PUSH2 0x3D53 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x100 SWAP1 DIV PUSH2 0xFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x23E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x597F JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x585F JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD NUMBER LT ISZERO PUSH2 0x2463 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5842 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x24FB JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2487 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x2669 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2521 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x2556 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5AD8 JUMP JUMPDEST DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2562 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 ADD SWAP4 POP PUSH1 0x0 DUP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC6F7865 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP11 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x25B4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x2606 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x261F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2633 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2657 SWAP2 SWAP1 PUSH2 0x5636 JUMP JUMPDEST SWAP6 ADD SWAP5 SWAP4 SWAP1 SWAP4 ADD SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x250C JUMP JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x2710 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH2 0xFFFF AND DUP4 DUP2 MUL DUP3 SWAP1 DIV SWAP2 SWAP1 DUP4 MUL DIV DUP2 ISZERO PUSH2 0x26C5 JUMPI PUSH1 0x5 SLOAD PUSH2 0x26C5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP5 PUSH2 0x3F31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2705 JUMPI PUSH1 0x5 SLOAD PUSH2 0x2705 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3F31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2751 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x277D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27A1 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x27F0 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x281C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2840 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x2887 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE SWAP8 DUP3 SWAP1 SUB SWAP8 SWAP7 DUP2 SWAP1 SUB SWAP7 SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0x2936 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2962 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2986 SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29F6 SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP DUP3 DUP7 MUL DUP3 DUP9 MUL GT ISZERO PUSH2 0x2C03 JUMPI PUSH1 0x0 DUP3 PUSH2 0x2A28 PUSH2 0xC9B DUP7 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP5 DUP9 MUL DUP5 DUP11 MUL SUB DUP2 PUSH2 0x2A37 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2A82 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x2B63 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2BAD JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2BAA SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2BB6 JUMPI PUSH2 0x2BB8 JUMP JUMPDEST POP JUMPDEST PUSH2 0x2C01 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST DUP3 DUP7 MUL DUP3 DUP9 MUL LT ISZERO PUSH2 0x2E08 JUMPI PUSH1 0x0 DUP4 PUSH2 0x2C2D PUSH2 0xEB4 DUP6 PUSH1 0x1 PUSH1 0x60 SHL DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST ADD DUP4 DUP10 MUL DUP6 DUP10 MUL SUB DUP2 PUSH2 0x2C3C JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2C87 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 DUP4 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND DUP3 MSTORE PUSH32 0x0 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 DUP4 ADD MSTORE ADDRESS PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xE0 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x414BF389 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 SWAP2 PUSH4 0x414BF389 SWAP2 PUSH2 0x2D68 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5BB4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2DB2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2DAF SWAP2 DUP2 ADD SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2DBB JUMPI PUSH2 0x2DBD JUMP JUMPDEST POP JUMPDEST PUSH2 0x2E06 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xE592427A0AECE92DE3EDEE1F18E0157C05861564 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2E54 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E80 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EA4 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x2EF3 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x5771 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F1F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F43 SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST SWAP6 POP PUSH2 0x2F87 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 NOT DUP2 MSTORE POP PUSH2 0x3483 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2FBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A48 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2FE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A65 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x303E SWAP1 DUP6 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x30E7 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x3073 JUMP JUMPDEST POP POP POP POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x33DC JUMPI PUSH1 0x0 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x99FBAB88 DUP7 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3135 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x315D SWAP2 SWAP1 PUSH2 0x5D3F JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x318A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x31AE SWAP2 SWAP1 PUSH2 0x5659 JUMP JUMPDEST POP POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH2 0x31D7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP12 PUSH1 0x0 ADD MLOAD PUSH1 0x4 SLOAD PUSH2 0x3BA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 DUP7 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x31F6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH1 0x80 ADD MLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC49CCBE DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x327A SWAP2 SWAP1 PUSH2 0x5B71 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32CB SWAP2 SWAP1 PUSH2 0x5636 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC6F7865 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP15 DUP13 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3310 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP3 MSTORE ADDRESS SWAP1 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x40 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 SWAP1 SWAP3 ADD MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x3362 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x5B2E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x337B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x338F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33B3 SWAP2 SWAP1 PUSH2 0x5636 JUMP JUMPDEST SWAP15 DUP6 ADD SWAP15 SWAP14 DUP5 ADD SWAP14 SWAP13 SWAP1 SWAP7 ADD SWAP12 SWAP4 SWAP1 SWAP6 SUB SWAP9 SWAP1 SWAP9 ADD SWAP8 POP SWAP1 SUB SWAP5 SWAP1 SWAP5 ADD SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0x30F3 JUMP JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x2710 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH2 0xFFFF AND SWAP3 DUP4 MUL DUP2 SWAP1 DIV SWAP3 SWAP2 SWAP1 SWAP2 MUL DIV DUP2 ISZERO PUSH2 0x3439 JUMPI PUSH1 0x5 SLOAD PUSH2 0x3439 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP5 PUSH2 0x3F31 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3479 JUMPI PUSH1 0x5 SLOAD PUSH2 0x3479 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3F31 JUMP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x8 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x3521 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP6 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0xB8 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP5 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0xD0 SHL DUP3 DIV DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x34AD JUMP JUMPDEST POP POP DUP9 MLOAD SWAP3 SWAP4 POP PUSH2 0x3574 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP3 POP PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP2 POP PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x35C3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP1 PUSH2 0x3C54 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x35E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x360A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP5 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3651 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x365D DUP6 PUSH2 0x400A JUMP JUMPDEST SWAP2 SWAP11 POP SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x367A JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0x369C JUMPI PUSH2 0x3696 DUP6 DUP12 PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD DUP8 DUP8 DUP8 DUP8 PUSH2 0x46D3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP JUMPDEST PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3B06 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x0 PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3753 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3777 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP14 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP10 DUP6 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x37DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP15 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP8 GT ISZERO PUSH2 0x3881 JUMPI PUSH2 0x384C DUP14 PUSH1 0x0 ADD MLOAD DUP7 DUP6 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x383E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP10 PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP14 ADD MLOAD DUP6 MLOAD PUSH2 0x3874 SWAP2 SWAP1 DUP8 SWAP1 PUSH2 0xFFFF DUP8 AND SWAP1 DUP2 LT PUSH2 0x383E JUMPI INVALID JUMPDEST PUSH1 0xE0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MSTORE JUMPDEST DUP6 ISZERO PUSH2 0x38E3 JUMPI PUSH2 0x38AD DUP14 PUSH1 0x20 ADD MLOAD DUP6 DUP6 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x389F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0xC0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP14 ADD MLOAD DUP5 MLOAD PUSH2 0x38D5 SWAP2 SWAP1 DUP7 SWAP1 PUSH2 0xFFFF DUP8 AND SWAP1 DUP2 LT PUSH2 0x389F JUMPI INVALID JUMPDEST PUSH2 0x100 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD MSTORE JUMPDEST PUSH1 0x0 DUP3 PUSH1 0xA0 ADD MLOAD GT DUP1 PUSH2 0x38FA JUMPI POP PUSH1 0x0 DUP3 PUSH1 0xC0 ADD MLOAD GT JUMPDEST ISZERO PUSH2 0x3AFC JUMPI PUSH2 0x3907 PUSH2 0x50DA JUMP JUMPDEST DUP9 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x3917 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND PUSH1 0x0 EQ ISZERO PUSH2 0x3A39 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4418B22B PUSH1 0xE1 SHL DUP2 MSTORE PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP1 PUSH4 0x88316456 SWAP1 PUSH2 0x396B SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C61 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x39B5 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x39B2 SWAP2 DUP2 ADD SWAP1 PUSH2 0x55FB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x39BE JUMPI PUSH2 0x39DC JUMP JUMPDEST SWAP3 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x8 DUP1 SLOAD PUSH2 0xFFFF DUP8 AND SWAP1 DUP2 LT PUSH2 0x39F0 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP2 DUP3 SWAP1 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD SWAP2 DUP4 ADD MLOAD SWAP15 ADD SWAP14 SWAP13 ADD SWAP12 SWAP10 SWAP1 SWAP10 ADD SWAP9 PUSH2 0x3AFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x219F5D17 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 SWAP1 PUSH4 0x219F5D17 SWAP1 PUSH2 0x3A70 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x5C1D JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3ABA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3AB7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x54DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3AC3 JUMPI PUSH2 0x3ADE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD DUP14 ADD SWAP13 POP DUP1 PUSH1 0x60 ADD MLOAD DUP13 ADD SWAP12 POP DUP1 PUSH1 0x20 ADD MLOAD DUP11 ADD SWAP10 POP JUMPDEST POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x369F JUMP JUMPDEST POP PUSH2 0x3B50 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST PUSH2 0x3B99 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x0 PUSH2 0x3C54 JUMP JUMPDEST POP POP POP POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3BDB JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x3BD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x12FF JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3BE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x3CDC JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x3C8A SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x5785 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3CA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3CB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3CDA SWAP2 SWAP1 PUSH2 0x55E3 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x3CF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5B12 JUMP JUMPDEST PUSH2 0x3D4E DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D17 SWAP3 SWAP2 SWAP1 PUSH2 0x57EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x4A9C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3D79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x587C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3D9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5899 JUMP JUMPDEST PUSH2 0x3DAA DUP4 DUP4 DUP4 PUSH2 0x3D4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3DE3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A0E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP7 SUB SWAP1 SSTORE SWAP3 DUP7 AND DUP1 DUP3 MSTORE SWAP1 DUP4 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE SWAP2 MLOAD PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x3E41 SWAP1 DUP7 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 NUMBER PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3E94 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A2B JUMP JUMPDEST PUSH2 0x3EA0 DUP3 PUSH1 0x0 DUP4 PUSH2 0x3D4E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x3ED9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5AF5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE PUSH1 0x4 DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 SSTORE MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x303E SWAP1 DUP7 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH2 0x3D4E DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D17 SWAP3 SWAP2 SWAP1 PUSH2 0x57EB JUMP JUMPDEST PUSH2 0x3F71 DUP5 PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D17 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x57C7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3F9D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x58B6 JUMP JUMPDEST PUSH2 0x3FA9 PUSH1 0x0 DUP4 DUP4 PUSH2 0x3D4E JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x3FFE SWAP1 DUP6 SWAP1 PUSH2 0x5D92 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP1 DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x402A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4054 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x406F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x4099 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0x413D SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x418D SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x41C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x41FD SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 POP PUSH2 0x420E PUSH2 0x510B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4232 DUP12 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE DUP11 MLOAD PUSH2 0x425F SWAP1 DUP13 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x4B10 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE DUP11 MLOAD DUP12 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x427A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND SWAP2 POP DUP11 PUSH1 0x1 DUP13 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x429D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 POP PUSH1 0x0 JUMPDEST DUP12 MLOAD DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x46C4 JUMPI PUSH1 0x0 DUP13 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x42D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB AND GT ISZERO PUSH2 0x43AF JUMPI PUSH1 0x0 PUSH20 0xC36442B4A4522E871399CD717ABDD847AB11FE88 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x99FBAB88 DUP15 DUP5 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4322 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x434A SWAP2 SWAP1 PUSH2 0x5D3F JUMP JUMPDEST PUSH2 0x180 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4377 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x439B SWAP2 SWAP1 PUSH2 0x5659 JUMP JUMPDEST POP POP POP POP SWAP8 POP POP POP POP POP POP POP POP DUP1 DUP11 ADD SWAP10 POP POP JUMPDEST PUSH2 0x43B7 PUSH2 0x510B JUMP JUMPDEST PUSH2 0x43CA DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE DUP13 MLOAD PUSH2 0x43EB SWAP1 DUP15 SWAP1 PUSH2 0xFFFF DUP6 AND SWAP1 DUP2 LT PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE DUP13 MLOAD DUP14 SWAP1 PUSH2 0xFFFF DUP5 AND SWAP1 DUP2 LT PUSH2 0x440B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x44CB JUMPI DUP4 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4434 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x4485 PUSH2 0x4478 PUSH2 0x4468 DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD SWAP1 DUP2 SUB SWAP1 PUSH2 0x3BA5 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x448D JUMPI INVALID JUMPDEST DIV DUP10 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x449E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP9 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x44BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 ADD SWAP12 POP PUSH2 0x46BB JUMP JUMPDEST DUP13 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x44DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x457E JUMPI DUP3 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4504 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x4538 DUP4 PUSH1 0x0 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x60 SHL DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x4540 JUMPI INVALID JUMPDEST DIV DUP9 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4551 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP8 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x456D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 ADD SWAP11 POP PUSH2 0x46BB JUMP JUMPDEST DUP4 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x458F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x45EE PUSH2 0x45DA PUSH2 0x45C3 DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x0 ADD MLOAD DUP13 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP2 SUB SWAP1 PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x45F6 JUMPI INVALID JUMPDEST DIV DUP10 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP3 DUP14 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4624 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND PUSH2 0x465D DUP4 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH1 0x1 PUSH1 0x60 SHL DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD SUB PUSH2 0x3BA5 JUMP JUMPDEST MUL DUP2 PUSH2 0x4665 JUMPI INVALID JUMPDEST DIV DUP9 DUP4 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4676 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP9 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x4692 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP13 ADD SWAP12 POP DUP8 DUP3 PUSH2 0xFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x46AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP12 ADD SWAP11 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x42B3 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP4 SWAP6 SWAP1 SWAP3 SWAP5 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 MLOAD PUSH1 0x1 EQ ISZERO PUSH2 0x46EA JUMPI POP DUP5 SWAP1 POP DUP4 PUSH2 0x4A90 JUMP JUMPDEST PUSH2 0x46F2 PUSH2 0x510B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB4C7741 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x1F98431C8AD98523631AE4A59F267346EA31F984 SWAP1 PUSH4 0x1698EE82 SWAP1 PUSH2 0x4790 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x579F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x47A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x47BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x47E0 SWAP2 SWAP1 PUSH2 0x51A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4818 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x482C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4850 SWAP2 SWAP1 PUSH2 0x552B JUMP JUMPDEST POP POP POP POP POP POP SWAP1 POP PUSH2 0x48B1 DUP2 PUSH2 0x486C DUP14 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH2 0x487C DUP15 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH2 0x489B DUP15 DUP12 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x488D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP15 PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x48AC DUP15 DUP12 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x488D JUMPI INVALID JUMPDEST PUSH2 0x4E29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 MSTORE DUP11 MLOAD PUSH1 0x0 NOT DUP2 ADD SWAP1 PUSH2 0x4917 SWAP1 DUP4 SWAP1 PUSH2 0x48DA SWAP1 DUP16 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x4221 JUMPI INVALID JUMPDEST PUSH2 0x48E9 DUP16 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x424E JUMPI INVALID JUMPDEST PUSH2 0x4907 DUP16 DUP13 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x48F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP16 PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x48AC DUP16 DUP13 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x48F9 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP5 ADD MSTORE DUP12 MLOAD DUP13 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x4932 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP4 PUSH1 0x20 ADD MLOAD MUL DUP13 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4955 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 PUSH1 0x0 ADD MLOAD MUL GT ISZERO PUSH2 0x4A02 JUMPI PUSH1 0x0 DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4981 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 PUSH1 0x20 ADD MLOAD MUL GT ISZERO PUSH2 0x49F5 JUMPI PUSH2 0x49EE DUP10 DUP14 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x49AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP6 PUSH1 0x0 ADD MLOAD MUL DUP15 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x49D2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP7 PUSH1 0x20 ADD MLOAD MUL PUSH2 0x3BA5 JUMP JUMPDEST SWAP5 POP PUSH2 0x49FA JUMP JUMPDEST PUSH1 0x0 SWAP5 POP JUMPDEST DUP8 SWAP4 POP PUSH2 0x4A8C JUMP JUMPDEST DUP9 SWAP5 POP PUSH1 0x0 DUP13 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4A13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP5 PUSH1 0x0 ADD MLOAD MUL GT ISZERO PUSH2 0x4A87 JUMPI PUSH2 0x4A80 DUP9 DUP14 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4A41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP6 PUSH1 0x20 ADD MLOAD MUL DUP15 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4A64 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH3 0xFFFFFF AND DUP7 PUSH1 0x0 ADD MLOAD MUL PUSH2 0x3BA5 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A8C JUMP JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST POP POP POP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AD6 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5237 PUSH1 0xF0 SHL DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4EED SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x3D4E JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4AF4 SWAP2 SWAP1 PUSH2 0x53AB JUMP JUMPDEST PUSH2 0x3D4E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5A82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x4B27 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x4B2F JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x4B54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x59B9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x4B68 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x4B7A JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x4BAE JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x4BCD JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x4BEC JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x4C0B JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x4C2A JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4C49 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4C68 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x4C88 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x4CA8 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x4CC8 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x4CE8 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x4D08 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x4D28 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x4D48 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x4D68 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x4D89 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x4DA9 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x4DC8 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x4DE5 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x4E00 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x4DFC JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x4E14 JUMPI PUSH1 0x1 PUSH2 0x4E17 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4E49 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4E74 JUMPI PUSH2 0x4E6D DUP6 DUP6 DUP6 PUSH2 0x4F04 JUMP JUMPDEST SWAP1 POP PUSH2 0x4EE4 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT ISZERO PUSH2 0x4ED6 JUMPI PUSH1 0x0 PUSH2 0x4E9B DUP8 DUP7 DUP7 PUSH2 0x4F04 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4EAA DUP8 DUP10 DUP7 PUSH2 0x4F67 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x4ECB JUMPI DUP1 PUSH2 0x4ECD JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP PUSH2 0x4EE4 JUMP JUMPDEST PUSH2 0x4EE1 DUP6 DUP6 DUP5 PUSH2 0x4F67 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4EFC DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x4FA4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4F24 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x0 PUSH2 0x4F47 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x3BA5 JUMP JUMPDEST SWAP1 POP PUSH2 0x4EE4 PUSH2 0x4F62 DUP5 DUP4 DUP9 DUP9 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH2 0x5064 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4F87 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH2 0x4EFC PUSH2 0x4F62 DUP4 PUSH1 0x1 PUSH1 0x60 SHL DUP8 DUP8 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3BA5 JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x4FC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x590D JUMP JUMPDEST PUSH2 0x4FCF DUP6 PUSH2 0x507A JUMP JUMPDEST PUSH2 0x4FEB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP1 PUSH2 0x5963 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x5007 SWAP2 SWAP1 PUSH2 0x5755 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5044 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5049 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x5059 DUP3 DUP3 DUP7 PUSH2 0x5080 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x508F JUMPI POP DUP2 PUSH2 0x12FF JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x509F JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5CB SWAP2 SWAP1 PUSH2 0x580F JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x50D7 SWAP2 SWAP1 PUSH2 0x5125 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x513A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5126 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x17CB DUP2 PUSH2 0x5DF9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x17CB DUP2 PUSH2 0x5E1C JUMP JUMPDEST DUP1 MLOAD PUSH2 0x17CB DUP2 PUSH2 0x5E1C JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x17CB DUP2 PUSH2 0x5E3B JUMP JUMPDEST DUP1 MLOAD PUSH2 0x17CB DUP2 PUSH2 0x5E3B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x519D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x12FF DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x51B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x12FF DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x51D6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x51E1 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x51F1 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5210 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x521B DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x522B DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x524E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5259 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x51F1 DUP2 PUSH2 0x5E0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x527B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x5286 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x52A6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x52BD JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x52D0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x52DC JUMPI INVALID JUMPDEST PUSH2 0x52E9 DUP5 DUP6 DUP4 MUL ADD PUSH2 0x5DA9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD PUSH1 0x80 DUP1 DUP6 MUL DUP8 ADD DUP9 ADD DUP12 LT ISZERO PUSH2 0x5307 JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x539C JUMPI DUP1 DUP3 DUP13 SUB SLT ISZERO PUSH2 0x5321 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 ADD DUP2 DUP2 LT DUP10 DUP3 GT OR ISZERO PUSH2 0x5336 JUMPI INVALID JUMPDEST DUP3 MSTORE DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x534E JUMPI DUP12 DUP13 REVERT JUMPDEST DUP2 MSTORE DUP4 DUP11 ADD CALLDATALOAD PUSH2 0x535D DUP2 PUSH2 0x5E1C JUMP JUMPDEST DUP2 DUP12 ADD MSTORE PUSH2 0x536C DUP5 DUP4 ADD PUSH2 0x5149 JUMP JUMPDEST DUP3 DUP3 ADD MSTORE PUSH1 0x60 SWAP2 POP PUSH2 0x537F DUP3 DUP6 ADD PUSH2 0x5176 JUMP JUMPDEST SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP8 ADD SWAP3 SWAP1 DUP2 ADD SWAP1 PUSH2 0x530B JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53BC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x12FF DUP2 PUSH2 0x5E0E JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53D8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53EF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x540C JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH2 0x5441 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x53D8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x547B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xA0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x5498 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH2 0x54C3 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x54EF JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x54F8 DUP5 PUSH2 0x515F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5520 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x12FF DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x5545 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 MLOAD PUSH2 0x5550 DUP2 PUSH2 0x5DF9 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH2 0x5561 DUP2 PUSH2 0x5E1C JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP PUSH2 0x5572 DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0x60 DUP10 ADD MLOAD SWAP1 SWAP6 POP PUSH2 0x5583 DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x5594 DUP2 PUSH2 0x5E2B JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x55AA JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x55BB DUP2 PUSH2 0x5E0E JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55DC JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x55F4 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x5610 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 MLOAD SWAP4 POP PUSH2 0x5620 PUSH1 0x20 DUP7 ADD PUSH2 0x515F JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5648 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x180 DUP14 DUP16 SUB SLT ISZERO PUSH2 0x567B JUMPI DUP6 DUP7 REVERT JUMPDEST DUP13 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5696 JUMPI DUP7 DUP8 REVERT JUMPDEST SWAP12 POP PUSH2 0x56A4 PUSH1 0x20 DUP15 ADD PUSH2 0x513E JUMP JUMPDEST SWAP11 POP PUSH2 0x56B2 PUSH1 0x40 DUP15 ADD PUSH2 0x513E JUMP JUMPDEST SWAP10 POP PUSH2 0x56C0 PUSH1 0x60 DUP15 ADD PUSH2 0x513E JUMP JUMPDEST SWAP9 POP PUSH2 0x56CE PUSH1 0x80 DUP15 ADD PUSH2 0x5181 JUMP JUMPDEST SWAP8 POP PUSH2 0x56DC PUSH1 0xA0 DUP15 ADD PUSH2 0x5154 JUMP JUMPDEST SWAP7 POP PUSH2 0x56EA PUSH1 0xC0 DUP15 ADD PUSH2 0x5154 JUMP JUMPDEST SWAP6 POP PUSH2 0x56F8 PUSH1 0xE0 DUP15 ADD PUSH2 0x515F JUMP JUMPDEST SWAP5 POP PUSH2 0x100 DUP14 ADD MLOAD SWAP4 POP PUSH2 0x120 DUP14 ADD MLOAD SWAP3 POP PUSH2 0x5717 PUSH2 0x140 DUP15 ADD PUSH2 0x515F JUMP JUMPDEST SWAP2 POP PUSH2 0x5726 PUSH2 0x160 DUP15 ADD PUSH2 0x515F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE JUMP JUMPDEST PUSH3 0xFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x5767 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5DCD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0xFFFFFF SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x582E DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5DCD JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x52333 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523133 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x291919 PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523233 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523235 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523139 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x29189B PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x148D PUSH1 0xF2 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x148C4D PUSH1 0xEA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523131 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x5235 PUSH1 0xF0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523231 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x52313 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1 SWAP1 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523135 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0xA4627 PUSH1 0xEB SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x148C8D PUSH1 0xEA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x29191B PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0xA4647 PUSH1 0xEB SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523239 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0xA47 PUSH1 0xF3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523137 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x291899 PUSH1 0xE9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x52323 PUSH1 0xEC SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3 SWAP1 DUP3 ADD MSTORE PUSH3 0x523237 PUSH1 0xE8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2 SWAP1 DUP3 ADD MSTORE PUSH2 0x291B PUSH1 0xF1 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP DUP3 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP5 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD DUP3 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP5 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD MLOAD DUP3 AND SWAP1 DUP4 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 DUP1 DUP5 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xE0 SWAP3 DUP4 ADD MLOAD AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 ADD SWAP1 POP PUSH2 0x5C75 DUP3 DUP5 MLOAD PUSH2 0x5738 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x5C87 PUSH1 0x20 DUP5 ADD DUP3 PUSH2 0x5738 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x5C9A PUSH1 0x40 DUP5 ADD DUP3 PUSH2 0x574C JUMP JUMPDEST POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x5CAD PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0x5745 JUMP JUMPDEST POP PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x5CC0 PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x5745 JUMP JUMPDEST POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH2 0x100 DUP1 DUP5 ADD MLOAD DUP2 DUP5 ADD MSTORE POP PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x5CFE DUP3 DUP6 ADD DUP3 PUSH2 0x5738 JUMP JUMPDEST POP POP PUSH2 0x140 SWAP3 DUP4 ADD MLOAD SWAP2 SWAP1 SWAP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xB8 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x2 SWAP3 DUP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE SWAP2 SIGNEXTEND PUSH1 0x40 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH3 0xFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x5DC5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5DE8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DD0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x3F71 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x50D7 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 PUSH16 0xB29AF291438B541627E21439B7CAD869 DUP13 0xB0 LOG4 0xAD 0xE2 PUSH31 0xE568CA5D67D489964736F6C63430007060033000000000000000000000000 ", + "sourceMap": "16989:35015:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35582:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19548:174;;;;;;;;;;-1:-1:-1;19548:174:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17761:31::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;30768:4265::-;;;;;;;;;;-1:-1:-1;30768:4265:0;;;;;:::i;:::-;;:::i;:::-;;17873:38;;;;;;;;;;-1:-1:-1;17873:38:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;35873:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;17597:41::-;;;;;;;;;;-1:-1:-1;17597:41:0;;;;;:::i;:::-;;:::i;19728:425::-;;;;;;;;;;-1:-1:-1;19728:425:0;;;;;:::i;:::-;;:::i;25733:795::-;;;;;;;;;;-1:-1:-1;25733:795:0;;;;;:::i;:::-;;:::i;35782:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20159:1584::-;;;;;;;;;;-1:-1:-1;20159:1584:0;;;;;:::i;:::-;;:::i;35039:164::-;;;;;;;;;;-1:-1:-1;35039:164:0;;;;;:::i;:::-;;:::i;35979:139::-;;;;;;;;;;-1:-1:-1;35979:139:0;;;;;:::i;:::-;;:::i;21749:2872::-;;;;;;:::i;:::-;;:::i;17835:32::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;35488:88::-;;;;;;;;;;;;;:::i;35358:124::-;;;;;;;;;;-1:-1:-1;35358:124:0;;;;;:::i;:::-;;:::i;35680:96::-;;;;;;;;;;;;;:::i;16663:50::-;;;;;;;;;;-1:-1:-1;16663:50:0;;;;;:::i;:::-;;:::i;24627:1100::-;;;;;;;;;;-1:-1:-1;24627:1100:0;;;;;:::i;:::-;;:::i;19362:180::-;;;;;;;;;;-1:-1:-1;19362:180:0;;;;;:::i;:::-;;:::i;17798:31::-;;;;;;;;;;;;;:::i;36124:165::-;;;;;;;;;;-1:-1:-1;36124:165:0;;;;;:::i;:::-;;:::i;17946:24::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;35209:143::-;;;;;;;;;;-1:-1:-1;35209:143:0;;;;;:::i;:::-;;:::i;26534:4228::-;;;;;;;;;;;;;:::i;35582:92::-;35662:5;35655:12;;;;;;;;-1:-1:-1;;35655:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35630:13;;35655:12;;35662:5;;35655:12;;35662:5;35655:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35582:92;:::o;19548:174::-;19637:4;19657:37;19666:10;19678:7;19687:6;19657:8;:37::i;:::-;-1:-1:-1;19711:4:0;19548:174;;;;:::o;17761:31::-;;;:::o;30768:4265::-;30847:10;16903:15;:30;;;;;;;;;;;16937:12;-1:-1:-1;16903:46:0;16895:62;;;;-1:-1:-1;;;16895:62:0;;;;;;;:::i;:::-;;;;;;;;;30891:6:::1;::::0;-1:-1:-1;;;;;30891:6:0::1;30877:10;:20;30869:36;;;;-1:-1:-1::0;;;30869:36:0::1;;;;;;;:::i;:::-;30977:182;::::0;;::::1;::::0;::::1;::::0;;31019:12:::1;::::0;30977:182;;30928:38:::1;30977:182;::::0;::::1;::::0;;;;;;;;;;31106:4:::1;30977:182:::0;;;;-1:-1:-1;;30977:182:0;;;;31169:30:::1;30977:182:::0;31169:16:::1;:30::i;:::-;;;;31209:42;31254:14;31209:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;-1:-1:-1;;;;;31209:59:0;::::1;::::0;;-1:-1:-1;;;31209:59:0;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;31209:59:0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;31209:59:0;::::1;;;::::0;;;;;;;;;::::1;::::0;::::1;;;;;;;;;;31283:9;31278:202;31302:18;:25;31298:1;:29;31278:202;;;17134:42;-1:-1:-1::0;;;;;31348:60:0::1;;31426:18;31445:1;31426:21;;;;;;;;;;;;;;:29;;;31348:121;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;31329:3:0::1;::::0;;::::1;::::0;-1:-1:-1;31278:202:0::1;::::0;-1:-1:-1;31278:202:0::1;;-1:-1:-1::0;31489:21:0::1;31496:14;;31489:21;:::i;:::-;31525:9;31520:463;31544:15;:22;31540:1;:26;31520:463;;;31626:15;31642:1;31626:18;;;;;;;;;;;;;;:28;;;31595:59;;:15;31611:1;31595:18;;;;;;;;;;;;;;:28;;;:59;;;31587:75;;;;-1:-1:-1::0;;;31587:75:0::1;;;;;;;:::i;:::-;31680:5:::0;;31676:124:::1;;31745:15;31765:1;31761;:5;31745:22;;;;;;;;;;;;;;:32;;;31713:64;;:15;31729:1;31713:18;;;;;;;;;;;;;;:28;;;:64;;;;31705:80;;;;-1:-1:-1::0;;;31705:80:0::1;;;;;;;:::i;:::-;31849:1;31821:15;31837:1;31821:18;;;;;;;;;;;;;;:25;;;:29;;;31813:45;;;;-1:-1:-1::0;;;31813:45:0::1;;;;;;;:::i;:::-;31880:15;31896:1;31880:18;;;;;;;;;;;;;;:26;;;-1:-1:-1::0;;;;;31880:31:0::1;31910:1;31880:31;31872:47;;;;-1:-1:-1::0;;;31872:47:0::1;;;;;;;:::i;:::-;31933:14;31953:15;31969:1;31953:18;;;;;;;;;::::0;;::::1;::::0;;;;;;;31933:39;;::::1;::::0;;::::1;::::0;;-1:-1:-1;31933:39:0;;;;;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;;31933:39:0::1;-1:-1:-1::0;;;;;31933:39:0::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;;31933:39:0::1;-1:-1:-1::0;;;;31933:39:0;;;::::1;::::0;;::::1;-1:-1:-1::0;;;31933:39:0::1;-1:-1:-1::0;;;;;;;;;31933:39:0;;::::1;-1:-1:-1::0;;;;;;31933:39:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;31568:3:::1;31520:463;;;-1:-1:-1::0;32012:39:0::1;::::0;-1:-1:-1;;;32012:39:0;;31993:16:::1;::::0;-1:-1:-1;;;;;32019:6:0::1;32012:24;::::0;::::1;::::0;:39:::1;::::0;32045:4:::1;::::0;32012:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31993:58;;32061:16;32087:6;-1:-1:-1::0;;;;;32080:24:0::1;;32113:4;32080:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32061:58;;32131:17;32150::::0;32183:249:::1;32210:212;;;;;;;;32252:8;32210:212;;;;32286:8;32210:212;;;;32316:1;32210:212;;;;32339:1;32210:212;;;;32369:4;-1:-1:-1::0;;;;;32210:212:0::1;;;;;-1:-1:-1::0;;32210:212:0::1;;::::0;32183:13:::1;:249::i;:::-;-1:-1:-1::0;;32578:131:0::1;::::0;-1:-1:-1;;;32578:131:0;;32443:21;;;::::1;::::0;32474;;;::::1;::::0;32130:302;;-1:-1:-1;32130:302:0;-1:-1:-1;32506:20:0::1;::::0;17223:42:::1;::::0;32578:43:::1;::::0;:131:::1;::::0;32639:6:::1;::::0;32663::::1;::::0;32687:8:::1;::::0;32578:131:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32550:184:0::1;;:186;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32505:231;;;;;;;;32784:9;32773:8;:20;32761:9;32750:8;:20;:43;32746:946;;;32809:18;33135:9;32903:217;32936:119;32973:9;33004:12;-1:-1:-1::0;;;;;32936:119:0::1;-1:-1:-1::0;;;32936:15:0::1;:119::i;:::-;33073:12;-1:-1:-1::0;;;;;32903:217:0::1;-1:-1:-1::0;;;32903:15:0::1;:217::i;:::-;:241;32865:9;32854:8;:20;32842:9;32831:8;:20;:43;32830:315;;;;;;::::0;-1:-1:-1;33159:50:0::1;-1:-1:-1::0;;;;;33166:6:0::1;33159:26;17306:42;32830:315:::0;33159:26:::1;:50::i;:::-;33285:316;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;33343:6:0::1;33285:316:::0;::::1;::::0;;33373:6:::1;33285:316;;::::0;::::1;::::0;33398:8:::1;33285:316;;::::0;;;;33439:4:::1;33285:316:::0;;;;-1:-1:-1;;33285:316:0;;;;;;;;;;-1:-1:-1;33285:316:0;;;;;;;;;;33227:388;;-1:-1:-1;;;33227:388:0;;17306:42:::1;::::0;33227:40:::1;::::0;:388:::1;::::0;33285:316;33227:388:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;33227:388:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;33227:388:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;33223:404;;;;;;;33640:41;-1:-1:-1::0;;;;;33647:6:0::1;33640:26;17306:42;33679:1;33640:26;:41::i;:::-;32746:946;;33739:9;33728:8;:20;33716:9;33705:8;:20;:43;33701:946;;;33764:18;34090:9;33858:217;33891:119;33928:9;-1:-1:-1::0;;;33997:12:0::1;-1:-1:-1::0;;;;;33891:119:0::1;:15;:119::i;:::-;-1:-1:-1::0;;;34062:12:0::1;-1:-1:-1::0;;;;;33858:217:0::1;:15;:217::i;:::-;:241;33820:9;33809:8;:20;33797:9;33786:8;:20;:43;33785:315;;;;;;::::0;-1:-1:-1;34114:50:0::1;-1:-1:-1::0;;;;;34121:6:0::1;34114:26;17306:42;33785:315:::0;34114:26:::1;:50::i;:::-;34240:316;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;34298:6:0::1;34240:316:::0;::::1;::::0;;34328:6:::1;34240:316;;::::0;::::1;::::0;34353:8:::1;34240:316;;::::0;;;;34394:4:::1;34240:316:::0;;;;-1:-1:-1;;34240:316:0;;;;;;;;;;-1:-1:-1;34240:316:0;;;;;;;;;;34182:388;;-1:-1:-1;;;34182:388:0;;17306:42:::1;::::0;34182:40:::1;::::0;:388:::1;::::0;34240:316;34182:388:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;34182:388:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;34182:388:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;34178:404;;;;;;;34595:41;-1:-1:-1::0;;;;;34602:6:0::1;34595:26;17306:42;34634:1;34595:26;:41::i;:::-;33701:946;;34668:39;::::0;-1:-1:-1;;;34668:39:0;;-1:-1:-1;;;;;34675:6:0::1;34668:24;::::0;::::1;::::0;:39:::1;::::0;34701:4:::1;::::0;34668:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34728;::::0;-1:-1:-1;;;34728:39:0;;34657:50;;-1:-1:-1;;;;;;34735:6:0::1;34728:24;::::0;::::1;::::0;:39:::1;::::0;34761:4:::1;::::0;34728:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34717:50;;34777:249;34804:212;;;;;;;;34846:8;34804:212;;;;34880:8;34804:212;;;;34910:1;34804:212;;;;34933:1;34804:212;;;;34963:4;-1:-1:-1::0;;;;;34804:212:0::1;;;;;-1:-1:-1::0;;34804:212:0::1;;::::0;34777:13:::1;:249::i;:::-;;;;;16977:1;;;;;;;30768:4265:::0;;:::o;17873:38::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17873:38:0;;;-1:-1:-1;;;;17873:38:0;;;;;;;-1:-1:-1;;;17873:38:0;;;;;;-1:-1:-1;;;17873:38:0;;;;;:::o;35873:100::-;35954:12;;35873:100;:::o;17597:41::-;;;;;;;;;;;;;;;:::o;19728:425::-;19858:4;19874:36;19884:6;19892:9;19903:6;19874:9;:36::i;:::-;-1:-1:-1;;;;;19947:19:0;;19920:24;19947:19;;;:11;:19;;;;;;;;19967:10;19947:31;;;;;;;;19996:26;;;;19988:42;;;;-1:-1:-1;;;19988:42:0;;;;;;;:::i;:::-;20070:55;20079:6;20087:10;20118:6;20099:16;:25;20070:8;:55::i;:::-;20142:4;20135:11;;;19728:425;;;;;;:::o;25733:795::-;25849:10;16903:15;:30;;;;;;;;;;;16937:12;-1:-1:-1;16903:46:0;16895:62;;;;-1:-1:-1;;;16895:62:0;;;;;;;:::i;:::-;25875:16:::1;25880:10;25875:4;:16::i;:::-;25928:12;:21;;;25909:15;:40;;25901:49;;;::::0;::::1;;25961:18;::::0;;26033:30:::1;;;::::0;;::::1;::::0;::::1;26050:12:::0;26033:30:::1;:::i;:::-;:16;:30::i;:::-;25960:103:::0;;-1:-1:-1;25960:103:0;-1:-1:-1;25960:103:0;-1:-1:-1;26073:43:0::1;26079:10;26091:24:::0;::::1;26073:5;:43::i;:::-;26149:12;:23;;;26135:10;:37;;26127:53;;;;-1:-1:-1::0;;;26127:53:0::1;;;;;;;:::i;:::-;26212:12;:23;;;26198:10;:37;;26190:53;;;;-1:-1:-1::0;;;26190:53:0::1;;;;;;;:::i;:::-;26254:51;-1:-1:-1::0;;;;;26261:6:0::1;26254:27;26282:10;26294::::0;26254:27:::1;:51::i;:::-;26315;-1:-1:-1::0;;;;;26322:6:0::1;26315:27;26343:10;26355::::0;26315:27:::1;:51::i;:::-;26431:6;-1:-1:-1::0;;;;;26381:140:0::1;26411:6;-1:-1:-1::0;;;;;26381:140:0::1;;26451:12;26477:10;26501;26381:140;;;;;;;;:::i;:::-;;;;;;;;16977:1;;;25733:795:::0;;:::o;35782:85::-;35858:2;35782:85;:::o;20159:1584::-;20268:10;16903:15;:30;;;;;;;;;;;16937:12;-1:-1:-1;16903:46:0;16895:62;;;;-1:-1:-1;;;16895:62:0;;;;;;;:::i;:::-;20294:16:::1;20299:10;20294:4;:16::i;:::-;20347:12;:21;;;20328:15;:40;;20320:49;;;::::0;::::1;;20379:133;-1:-1:-1::0;;;;;20386:6:0::1;20379:31;20424:10;20456:4;20475:27:::0;::::1;20379:31;:133::i;:::-;20523;-1:-1:-1::0;;;;;20530:6:0::1;20523:31;20568:10;20600:4;20619:27;::::0;::::1;;20523:31;:133::i;:::-;20677:17;::::0;;;20797:27:::1;;;::::0;;::::1;::::0;::::1;20811:12:::0;20797:27:::1;:::i;:::-;:13;:27::i;:::-;20667:157;;;;;;;;20839:15;-1:-1:-1::0;;;;;20839:20:0::1;20858:1;20839:20;20835:238;;;20875:31;20881:10;20893:12;-1:-1:-1::0;;;;;20875:31:0::1;:5;:31::i;:::-;20835:238;;;20937:125;20960:10;20988:60;21004:12;-1:-1:-1::0;;;;;20988:60:0::1;21018:12;;21032:15;-1:-1:-1::0;;;;;20988:60:0::1;:15;:60::i;:::-;20937:5;:125::i;:::-;21103:12;:23;;;21090:9;:36;;21082:52;;;;-1:-1:-1::0;;;21082:52:0::1;;;;;;;:::i;:::-;21189:12;:23;;;21176:9;:36;;21168:52;;;;-1:-1:-1::0;;;21168:52:0::1;;;;;;;:::i;:::-;21259:27:::0;::::1;:39:::0;-1:-1:-1;21255:196:0::1;;;21314:126;-1:-1:-1::0;;;;;21321:6:0::1;21314:27;21359:10;21387:27:::0;::::1;:39:::0;;::::1;21314:27;:126::i;:::-;21494:9;21464:12;:27;;;:39;21460:196;;;21519:126;-1:-1:-1::0;;;;;21526:6:0::1;21519:27;21564:10;21592:27;::::0;::::1;;:39:::0;;::::1;21519:27;:126::i;:::-;21693:6;-1:-1:-1::0;;;;;21670:66:0::1;21685:6;-1:-1:-1::0;;;;;21670:66:0::1;;21701:12;21715:9;21726;21670:66;;;;;;;;:::i;:::-;;;;;;;;16977:1;;;;20159:1584:::0;;:::o;35039:164::-;35143:6;;-1:-1:-1;;;;;35143:6:0;35129:10;:20;35121:36;;;;-1:-1:-1;;;35121:36:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35167:21:0;;;;;;;;:9;:21;;;;;:29;;-1:-1:-1;;35167:29:0;;;;;;;;;;35039:164::o;35979:139::-;-1:-1:-1;;;;;36093:18:0;;36063:7;36093:18;;;:9;:18;;;;;;35979:139;;;;:::o;21749:2872::-;19247:10;;;;19246:11;19238:27;;;;-1:-1:-1;;;19238:27:0;;;;;;;:::i;:::-;19293:10;:17;;-1:-1:-1;;19293:17:0;19306:4;19293:17;;;21890:10:::1;19293::::0;16903:30;;;::::1;::::0;;;;;;;16937:12:::1;-1:-1:-1::0;16903:46:0::1;16895:62;;;;-1:-1:-1::0;;;16895:62:0::1;;;;;;;:::i;:::-;21916:16:::2;21921:10;21916:4;:16::i;:::-;21969:12;:21;;;21950:15;:40;;21942:49;;;::::0;::::2;;22005:6;-1:-1:-1::0;;;;;22005:14:0::2;17379:42;22005:14;22001:1296;;;22051:27:::0;::::2;22039:9;:39;22035:356;;;22098:107;::::0;22106:10:::2;::::0;22160:27;::::2;22148:9;:39;22098:107:::0;::::2;;;::::0;22160:27:::2;22098:107:::0;22160:27;22098:107;22148:39;22106:10;22098:107;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;22035:356;;;22273:9;22286:27:::0;::::2;22273:40;22244:132;;;;-1:-1:-1::0;;;22244:132:0::2;;;;;;;:::i;:::-;17379:42;-1:-1:-1::0;;;;;22404:19:0::2;;22431:12;:27;;;22404:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;22475:149:0::2;::::0;-1:-1:-1;;;;;;;22482:6:0::2;22475:31;::::0;-1:-1:-1;22524:10:0::2;::::0;-1:-1:-1;22560:4:0::2;22583:27;::::0;::::2;;22475:31;:149::i;:::-;22001:1296;;;22663:6;-1:-1:-1::0;;;;;22663:14:0::2;17379:42;22663:14;22655:30;;;;-1:-1:-1::0;;;22655:30:0::2;;;;;;;:::i;:::-;22731:12;:27;;;22719:9;:39;22715:338;;;22778:107;::::0;22786:10:::2;::::0;22840:27:::2;::::0;::::2;;22828:9;:39;22778:107:::0;::::2;;;::::0;::::2;::::0;;;22828:39;22786:10;22778:107;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;22715:338;;;22966:12;:27;;;22953:9;:40;22924:114;;;;-1:-1:-1::0;;;22924:114:0::2;;;;;;;:::i;:::-;17379:42;-1:-1:-1::0;;;;;23066:19:0::2;;23093:12;:27;;;23066:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;23137:149:0::2;::::0;-1:-1:-1;;;;;;;23144:6:0::2;23137:31;::::0;-1:-1:-1;23186:10:0::2;::::0;-1:-1:-1;23222:4:0::2;23245:27:::0;::::2;23137:31;:149::i;:::-;23317:17;::::0;;;23437:27:::2;;;::::0;;::::2;::::0;::::2;23451:12:::0;23437:27:::2;:::i;:::-;23307:157;;;;;;;;23479:15;-1:-1:-1::0;;;;;23479:20:0::2;23498:1;23479:20;23475:238;;;23515:31;23521:10;23533:12;-1:-1:-1::0;;;;;23515:31:0::2;:5;:31::i;:::-;23475:238;;;23577:125;23600:10;23628:60;23644:12;-1:-1:-1::0;;;;;23628:60:0::2;23658:12;;23672:15;-1:-1:-1::0;;;;;23628:60:0::2;:15;:60::i;23577:125::-;23744:12;:23;;;23731:9;:36;;23723:52;;;;-1:-1:-1::0;;;23723:52:0::2;;;;;;;:::i;:::-;23806:12;:23;;;23793:9;:36;;23785:52;;;;-1:-1:-1::0;;;23785:52:0::2;;;;;;;:::i;:::-;23869:27:::0;::::2;:39:::0;;::::2;23939:27;::::0;::::2;;:39:::0;;::::2;23993:14:::0;;23989:268:::2;;24027:6;-1:-1:-1::0;;;;;24027:14:0::2;17379:42;24027:14;24023:224;;;24061:32;::::0;-1:-1:-1;;;24061:32:0;;17379:42:::2;::::0;24061:20:::2;::::0;:32:::2;::::0;24082:10;;24061:32:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;24111:31:0::2;::::0;:10:::2;::::0;-1:-1:-1;24111:31:0;::::2;;;::::0;-1:-1:-1;24131:10:0;;24111:31:::2;::::0;;;24131:10;24111;:31;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;24023:224;;;24181:51;-1:-1:-1::0;;;;;24188:6:0::2;24181:27;24209:10;24221::::0;24181:27:::2;:51::i;:::-;24270:14:::0;;24266:268:::2;;24304:6;-1:-1:-1::0;;;;;24304:14:0::2;17379:42;24304:14;24300:224;;;24338:32;::::0;-1:-1:-1;;;24338:32:0;;17379:42:::2;::::0;24338:20:::2;::::0;:32:::2;::::0;24359:10;;24338:32:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;24388:31:0::2;::::0;:10:::2;::::0;-1:-1:-1;24388:31:0;::::2;;;::::0;-1:-1:-1;24408:10:0;;24388:31:::2;::::0;;;24408:10;24388;:31;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;24300:224;;;24458:51;-1:-1:-1::0;;;;;24465:6:0::2;24458:27;24486:10;24498::::0;24458:27:::2;:51::i;:::-;24571:6;-1:-1:-1::0;;;;;24548:66:0::2;24563:6;-1:-1:-1::0;;;;;24548:66:0::2;;24579:12;24593:9;24604;24548:66;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;19331:10:0;:18;;-1:-1:-1;;19331:18:0;;;-1:-1:-1;;;;;;21749:2872:0:o;17835:32::-;;;:::o;35488:88::-;35563:6;;-1:-1:-1;;;;;35563:6:0;35488:88;:::o;35358:124::-;35439:6;;-1:-1:-1;;;;;35439:6:0;35425:10;:20;35417:36;;;;-1:-1:-1;;;35417:36:0;;;;;;;:::i;:::-;35463:3;:12;;;;;;;;-1:-1:-1;;35463:12:0;;;;;;;;;35358:124::o;35680:96::-;35762:7;35755:14;;;;;;;;-1:-1:-1;;35755:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35730:13;;35755:14;;35762:7;;35755:14;;35762:7;35755:14;;;;;;;;;;;;;;;;;;;;;;;;16663:50;;;;;;;;;;;;;;:::o;24627:1100::-;19247:10;;;;19246:11;19238:27;;;;-1:-1:-1;;;19238:27:0;;;;;;;:::i;:::-;19293:10;:17;;-1:-1:-1;;19293:17:0;19306:4;19293:17;;;24761:10:::1;19293::::0;16903:30;;;::::1;::::0;;;;;;;16937:12:::1;-1:-1:-1::0;16903:46:0::1;16895:62;;;;-1:-1:-1::0;;;16895:62:0::1;;;;;;;:::i;:::-;24783:16:::2;24788:10;24783:4;:16::i;:::-;24836:12;:21;;;24817:15;:40;;24809:49;;;::::0;::::2;;24869:18;::::0;;24941:30:::2;;;::::0;;::::2;::::0;::::2;24958:12:::0;24941:30:::2;:::i;:::-;24868:103:::0;;-1:-1:-1;24868:103:0;-1:-1:-1;24868:103:0;-1:-1:-1;24981:43:0::2;24987:10;24999:24:::0;::::2;24981:5;:43::i;:::-;25057:12;:23;;;25043:10;:37;;25035:53;;;;-1:-1:-1::0;;;25035:53:0::2;;;;;;;:::i;:::-;25120:12;:23;;;25106:10;:37;;25098:53;;;;-1:-1:-1::0;;;25098:53:0::2;;;;;;;:::i;:::-;25166:6;-1:-1:-1::0;;;;;25166:14:0::2;17379:42;25166:14;25162:404;;;25196:32;::::0;-1:-1:-1;;;25196:32:0;;17379:42:::2;::::0;25196:20:::2;::::0;:32:::2;::::0;25217:10;;25196:32:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;25242:31:0::2;::::0;:10:::2;::::0;-1:-1:-1;25242:31:0;::::2;;;::::0;-1:-1:-1;25262:10:0;;25242:31:::2;::::0;;;25262:10;25242;:31;::::2;;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;25287:51:0::2;-1:-1:-1::0;;;;;25294:6:0::2;25287:27;25315:10;25327::::0;25287:27:::2;:51::i;:::-;25162:404;;;25377:6;-1:-1:-1::0;;;;;25377:14:0::2;17379:42;25377:14;25369:30;;;;-1:-1:-1::0;;;25369:30:0::2;;;;;;;:::i;:::-;25413:32;::::0;-1:-1:-1;;;25413:32:0;;17379:42:::2;::::0;25413:20:::2;::::0;:32:::2;::::0;25434:10;;25413:32:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;25459:31:0::2;::::0;:10:::2;::::0;-1:-1:-1;25459:31:0;::::2;;;::::0;-1:-1:-1;25479:10:0;;25459:31:::2;::::0;;;25479:10;25459;:31;::::2;;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;25504:51:0::2;-1:-1:-1::0;;;;;25511:6:0::2;25504:27;25532:10;25544::::0;25504:27:::2;:51::i;:::-;25630:6;-1:-1:-1::0;;;;;25580:140:0::2;25610:6;-1:-1:-1::0;;;;;25580:140:0::2;;25650:12;25676:10;25700;25580:140;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;19331:10:0;:18;;-1:-1:-1;;19331:18:0;;;-1:-1:-1;;;24627:1100:0:o;19362:180::-;19454:4;19474:40;19484:10;19496:9;19507:6;19474:9;:40::i;17798:31::-;;;:::o;36124:165::-;-1:-1:-1;;;;;36254:19:0;;;36224:7;36254:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;36124:165::o;17946:24::-;;;;;;;;;:::o;35209:143::-;35304:6;;-1:-1:-1;;;;;35304:6:0;35290:10;:20;35282:36;;;;-1:-1:-1;;;35282:36:0;;;;;;;:::i;:::-;35328:6;:17;;-1:-1:-1;;;;;;35328:17:0;-1:-1:-1;;;;;35328:17:0;;;;;;;;;;35209:143::o;26534:4228::-;19144:10;19134:21;;;;:9;:21;;;;;;;;19126:37;;;;-1:-1:-1;;;19126:37:0;;;;;;;:::i;:::-;26596:10:::1;16903:15;:30:::0;;;::::1;::::0;;;;;;;16937:12:::1;-1:-1:-1::0;16903:46:0::1;16895:62;;;;-1:-1:-1::0;;;16895:62:0::1;;;;;;;:::i;:::-;26618:39:::2;26660:14;26618:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::2;::::0;;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;::::2;::::0;-1:-1:-1;;;;;26618:56:0;::::2;::::0;;-1:-1:-1;;;26618:56:0;::::2;;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;-1:-1:-1;;;26618:56:0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;;;;;-1:-1:-1;;;26618:56:0;::::2;;;::::0;;;;;;;;;::::2;::::0;::::2;;;;;;;;;;26684:17;26711:16:::0;26737::::2;26768:13:::0;26784:1:::2;26768:17;;26763:677;26795:15;:22;26787:5;:30;26763:677;;;26850:15;26866:5;26850:22;;;;;;;;;;;;;;:30;;;-1:-1:-1::0;;;;;26850:35:0::2;26884:1;26850:35;;26842:51;;;;-1:-1:-1::0;;;26842:51:0::2;;;;;;;:::i;:::-;26942:15;26958:5;26942:22;;;;;;;;;;;;;;:29;;;26929:42;;;;;;26986:15;27003::::0;17134:42:::2;-1:-1:-1::0;;;;;27034:63:0::2;;27115:234;;;;;;;;27180:15;27196:5;27180:22;;;;;;;;;::::0;;::::2;::::0;;;;;;;:30;-1:-1:-1;;;;;27115:234:0::2;::::0;;27243:4:::2;27115:234:::0;;::::2;::::0;-1:-1:-1;;;;;27115:234:0;;;;;;;;;;;;27034:329;-1:-1:-1;;;;;;27034:329:0::2;::::0;;;;;;::::2;::::0;;::::2;;;:::i;:::-;;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27377:19:::0;::::2;::::0;27410;;;::::2;::::0;-1:-1:-1;;26819:7:0::2;;26763:677;;;-1:-1:-1::0;27476:3:0::2;::::0;17459:5:::2;27476:3;::::0;;::::2;27464:31;27476:3;27465:14:::0;;::::2;27464:31:::0;;::::2;::::0;27521:14;;::::2;27520:31;27565:8:::0;;27561:80:::2;;27617:6;::::0;27589:41:::2;::::0;-1:-1:-1;;;;;27596:6:0::2;27589:27:::0;::::2;::::0;27617:6:::2;27625:4:::0;27589:27:::2;:41::i;:::-;27654:8:::0;;27650:80:::2;;27706:6;::::0;27678:41:::2;::::0;-1:-1:-1;;;;;27685:6:0::2;27678:27:::0;::::2;::::0;27706:6:::2;27714:4:::0;27678:27:::2;:41::i;:::-;27750:39;::::0;-1:-1:-1;;;27750:39:0;;-1:-1:-1;;;;;27757:6:0::2;27750:24;::::0;::::2;::::0;:39:::2;::::0;27783:4:::2;::::0;27750:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27810;::::0;-1:-1:-1;;;27810:39:0;;27739:50;;-1:-1:-1;;;;;;27817:6:0::2;27810:24;::::0;::::2;::::0;:39:::2;::::0;27843:4:::2;::::0;27810:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27799:50;;27861:17;27880::::0;27913:249:::2;27940:212;;;;;;;;27982:8;27940:212;;;;28016:8;27940:212;;;;28046:1;27940:212;;;;28069:1;27940:212;;;;28099:4;-1:-1:-1::0;;;;;27940:212:0::2;;;;;-1:-1:-1::0;;27940:212:0::2;;::::0;27913:13:::2;:249::i;:::-;-1:-1:-1::0;;28307:131:0::2;::::0;-1:-1:-1;;;28307:131:0;;28172:21;;;::::2;::::0;28203;;;::::2;::::0;27860:302;;-1:-1:-1;27860:302:0;-1:-1:-1;28235:20:0::2;::::0;17223:42:::2;::::0;28307:43:::2;::::0;:131:::2;::::0;28368:6:::2;::::0;28392::::2;::::0;28416:8:::2;::::0;28307:131:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28279:184:0::2;;:186;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28234:231;;;;;;;;28513:9;28502:8;:20;28490:9;28479:8;:20;:43;28475:946;;;28538:18;28864:9;28632:217;28665:119;28702:9;28733:12;-1:-1:-1::0;;;;;28665:119:0::2;-1:-1:-1::0;;;28665:15:0::2;:119::i;28632:217::-;:241;28594:9;28583:8;:20;28571:9;28560:8;:20;:43;28559:315;;;;;;::::0;-1:-1:-1;28888:50:0::2;-1:-1:-1::0;;;;;28895:6:0::2;28888:26;17306:42;28559:315:::0;28888:26:::2;:50::i;:::-;29014:316;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;29072:6:0::2;29014:316:::0;::::2;::::0;;29102:6:::2;29014:316;;::::0;::::2;::::0;29127:8:::2;29014:316;;::::0;;;;29168:4:::2;29014:316:::0;;;;-1:-1:-1;;29014:316:0;;;;;;;;;;-1:-1:-1;29014:316:0;;;;;;;;;;28956:388;;-1:-1:-1;;;28956:388:0;;17306:42:::2;::::0;28956:40:::2;::::0;:388:::2;::::0;29014:316;28956:388:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;-1:-1:-1::0;28956:388:0::2;::::0;;::::2;;::::0;;::::2;-1:-1:-1::0;;28956:388:0::2;::::0;::::2;::::0;;;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;;;28952:404;;;;;;;29369:41;-1:-1:-1::0;;;;;29376:6:0::2;29369:26;17306:42;29408:1;29369:26;:41::i;:::-;28475:946;;29468:9;29457:8;:20;29445:9;29434:8;:20;:43;29430:946;;;29493:18;29819:9;29587:217;29620:119;29657:9;-1:-1:-1::0;;;29726:12:0::2;-1:-1:-1::0;;;;;29620:119:0::2;:15;:119::i;29587:217::-;:241;29549:9;29538:8;:20;29526:9;29515:8;:20;:43;29514:315;;;;;;::::0;-1:-1:-1;29843:50:0::2;-1:-1:-1::0;;;;;29850:6:0::2;29843:26;17306:42;29514:315:::0;29843:26:::2;:50::i;:::-;29969:316;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;30027:6:0::2;29969:316:::0;::::2;::::0;;30057:6:::2;29969:316;;::::0;::::2;::::0;30082:8:::2;29969:316;;::::0;;;;30123:4:::2;29969:316:::0;;;;-1:-1:-1;;29969:316:0;;;;;;;;;;-1:-1:-1;29969:316:0;;;;;;;;;;29911:388;;-1:-1:-1;;;29911:388:0;;17306:42:::2;::::0;29911:40:::2;::::0;:388:::2;::::0;29969:316;29911:388:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;-1:-1:-1::0;29911:388:0::2;::::0;;::::2;;::::0;;::::2;-1:-1:-1::0;;29911:388:0::2;::::0;::::2;::::0;;;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;;;29907:404;;;;;;;30324:41;-1:-1:-1::0;;;;;30331:6:0::2;30324:26;17306:42;30363:1;30324:26;:41::i;:::-;29430:946;;30397:39;::::0;-1:-1:-1;;;30397:39:0;;-1:-1:-1;;;;;30404:6:0::2;30397:24;::::0;::::2;::::0;:39:::2;::::0;30430:4:::2;::::0;30397:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30457;::::0;-1:-1:-1;;;30457:39:0;;30386:50;;-1:-1:-1;;;;;;30464:6:0::2;30457:24;::::0;::::2;::::0;:39:::2;::::0;30490:4:::2;::::0;30457:39:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30446:50;;30506:249;30533:212;;;;;;;;30575:8;30533:212;;;;30609:8;30533:212;;;;30639:1;30533:212;;;;30662:1;30533:212;;;;30692:4;-1:-1:-1::0;;;;;30533:212:0::2;;;;;-1:-1:-1::0;;30533:212:0::2;;::::0;30506:13:::2;:249::i;:::-;;;;;16977:1;;;;;;;;;19190::::1;26534:4228::o:0;37694:358::-;-1:-1:-1;;;;;37818:20:0;;37810:36;;;;-1:-1:-1;;;37810:36:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37893:21:0;;37885:37;;;;-1:-1:-1;;;37885:37:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37960:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;;:37;;;38012:33;;;;;37991:6;;38012:33;:::i;:::-;;;;;;;;37694:358;;;:::o;49621:2219::-;49722:18;49750;49778:20;49819:39;49861:14;49819:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;49819:56:0;;;;-1:-1:-1;;;49819:56:0;;;;;;;;;;;;;;-1:-1:-1;;;49819:56:0;;;;;;;;;;;;;;;-1:-1:-1;;;49819:56:0;;;;;;;;;;;;;;;;;;;;;;;;;49885:12;49907;49934:8;49929:1639;49952:15;:22;49948:1;:26;;;49929:1639;;;50010:17;17134:42;-1:-1:-1;;;;;50051:78:0;;50130:15;50146:1;50130:18;;;;;;;;;;;;;;;;:26;;;50051:106;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;49995:162;;;;;;;;;;;;;50171:20;50231:144;50268:9;-1:-1:-1;;;;;50231:144:0;50299:12;:24;;;50345:12;;50231:15;:144::i;:::-;50171:218;;50404:94;50525:252;;;;;;;;50600:15;50616:1;50600:18;;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;50525:252:0;;;;;50651:12;-1:-1:-1;;;;;50525:252:0;;;;;50689:1;50525:252;;;;50716:1;50525:252;;;;50741:12;:21;;;50525:252;;;50404:373;;50792:15;50809;17134:42;-1:-1:-1;;;;;50840:86:0;;50927:23;50840:111;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50791:160;;;;50966:22;50990;17134:42;-1:-1:-1;;;;;51028:63:0;;51109:230;;;;;;;;51174:15;51190:1;51174:18;;;;;;;;;;;;;;;;;;;;;:26;-1:-1:-1;;;;;51109:230:0;;;51233:4;51109:230;;;;-1:-1:-1;;;;;51109:230:0;;;;;;;;;;;;51028:325;-1:-1:-1;;;;;;51028:325:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51459:21;;;;51494;;;;51529:28;;;;;51375:24;;;;51367:32;;;;;-1:-1:-1;51421:24:0;;51413:32;;;;;-1:-1:-1;;;49976:3:0;;49929:1639;;;-1:-1:-1;51592:3:0;;17459:5;51592:3;;;;51584:27;51592:3;51585:10;;;51584:27;;;;51629:10;;;;51628:27;51669:8;;51665:80;;51721:6;;51693:41;;-1:-1:-1;;;;;51700:6:0;51693:27;;;51721:6;51729:4;51693:27;:41::i;:::-;51758:8;;51754:80;;51810:6;;51782:41;;-1:-1:-1;;;;;51789:6:0;51782:27;;;51810:6;51818:4;51782:27;:41::i;:::-;49621:2219;;;;;;;;:::o;44553:5062::-;44648:17;44675;44702:23;44735:20;44776:39;44818:14;44776:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;44776:56:0;;;;-1:-1:-1;;;44776:56:0;;;;;;;;;;;;;;-1:-1:-1;;;44776:56:0;;;;;;;;;;;;;;;-1:-1:-1;;;44776:56:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;44922:27:0;;44776:56;;-1:-1:-1;44842:117:0;;-1:-1:-1;;;;;44849:6:0;44842:26;;-1:-1:-1;17134:42:0;;-1:-1:-1;44842:26:0;:117::i;:::-;45049:27;;;;44969:117;;-1:-1:-1;;;;;44976:6:0;44969:26;;17134:42;;44969:26;:117::i;:::-;45097:18;45125;45153:24;45194:15;:22;45180:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45180:37:0;;45153:64;;45227:24;45268:15;:22;45254:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45254:37:0;;45227:64;;45414:31;45429:15;45414:14;:31::i;:::-;45302:143;;-1:-1:-1;45302:143:0;;-1:-1:-1;45302:143:0;;-1:-1:-1;45302:143:0;;-1:-1:-1;45302:143:0;-1:-1:-1;45459:14:0;;;;;:32;;;45490:1;45477:10;:14;45459:32;45455:350;;;45534:260;45569:15;45602:12;:27;;;45647:12;:27;;;45692:10;45720;45748:7;45773;45534:17;:260::i;:::-;45507:287;;-1:-1:-1;45507:287:0;-1:-1:-1;45455:350:0;45820:8;45815:3660;45838:15;:22;45834:1;:26;;;45815:3660;;;45881:56;45952:442;;;;;;;;46013:6;-1:-1:-1;;;;;45952:442:0;;;;;46041:6;-1:-1:-1;;;;;45952:442:0;;;;;46066:8;45952:442;;;;;;46099:15;46115:1;46099:18;;;;;;;;;;;;;;;;:28;;;45952:442;;;;;;46152:15;46168:1;46152:18;;;;;;;;;;;;;;;;:28;;;45952:442;;;;;;46210:1;45952:442;;;;46241:1;45952:442;;;;46268:1;45952:442;;;;46295:1;45952:442;;;;46329:4;-1:-1:-1;;;;;45952:442:0;;;;;46358:12;:21;;;45952:442;;;45881:513;;46409:94;46530:277;;;;;;;;46605:15;46621:1;46605:18;;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;46530:277:0;;;;;46661:1;46530:277;;;;46692:1;46530:277;;;;46719:1;46530:277;;;;46746:1;46530:277;;;;46771:12;:21;;;46530:277;;;46409:398;;46838:1;46825:10;:14;46821:588;;;46887:146;46924:12;:27;;;46973:7;46981:1;46973:10;;;;;;;;;;;;;;;;47005;46887:15;:146::i;:::-;46859:25;;;:174;;;47051:38;;;:83;47213:23;;;;47258:10;;47176:142;;47213:23;47258:7;;:10;;;;;;;;;47176:142;47152:21;;;:166;;;47336:34;;;:58;46821:588;47426:14;;47422:588;;47488:146;47525:12;:27;;;47574:7;47582:1;47574:10;;;;;;;;;;;;;;;;47606;47488:15;:146::i;:::-;47460:25;;;:174;;;47652:38;;;:83;47814:23;;;;47859:10;;47777:142;;47814:23;47859:7;;:10;;;;;;;;;47777:142;47753:21;;;:166;;;47937:34;;;:58;47422:588;48072:1;48044:10;:25;;;:29;:62;;;;48105:1;48077:10;:25;;;:29;48044:62;48023:1442;;;48139:28;;:::i;:::-;48189:15;48205:1;48189:18;;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;48189:31:0;48219:1;48189:31;48185:1266;;;48249:93;;-1:-1:-1;;;48249:93:0;;17134:42;;48249:81;;:93;;48331:10;;48249:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48249:93:0;;;;;;;;-1:-1:-1;;48249:93:0;;;;;;;;;;;;:::i;:::-;;;48245:385;;;;;48426:23;;;-1:-1:-1;;;;;48475:25:0;;;:20;;;:25;48526:18;;;:23;48575:18;;;:23;48245:385;48688:18;;48652:14;:17;;;;;;;;;;;;;;;;;;;;;;:55;;-1:-1:-1;;;;;;48652:55:0;-1:-1:-1;;;;;48652:55:0;;;;;;;;;;;48743:18;;;;48796;;;;48852:20;;;;48730:31;;;48783;;;48836:36;;;;;48185:1266;;;48923:119;;-1:-1:-1;;;48923:119:0;;17134:42;;48923:94;;:119;;49018:23;;48923:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48923:119:0;;;;;;;;-1:-1:-1;;48923:119:0;;;;;;;;;;;;:::i;:::-;;;48919:350;;;;;-1:-1:-1;;;;;49114:25:0;;;:20;;;:25;49165:18;;;:23;49214:18;;;:23;48919:350;49303:10;:18;;;49290:31;;;;49356:10;:18;;;49343:31;;;;49412:10;:20;;;49396:36;;;;48185:1266;48023:1442;;-1:-1:-1;;45862:3:0;;45815:3660;;;-1:-1:-1;49484:57:0;-1:-1:-1;;;;;49491:6:0;49484:26;17134:42;49539:1;49484:26;:57::i;:::-;49551;-1:-1:-1;;;;;49558:6:0;49551:26;17134:42;49606:1;49551:26;:57::i;:::-;44553:5062;;;;;;;;;;:::o;7440:1660::-;7552:14;;;-1:-1:-1;;7756:1:0;7753;7746:20;7788:9;;;;-1:-1:-1;7839:13:0;;;7823:14;;;;7819:34;;-1:-1:-1;7877:10:0;7873:179;;7925:1;7911:11;:15;7903:24;;;;;;-1:-1:-1;7978:23:0;;;;-1:-1:-1;8028:13:0;;7873:179;8084:5;8070:11;:19;8062:28;;;;;;8101:17;8177:11;8174:1;8171;8164:25;8335:12;8350;;;:26;;8425:22;;;;;8682:1;8663;:15;;8662:21;;8705:17;;;8701:21;;8694:28;8763:17;;;8759:21;;8752:28;8822:17;;;8818:21;;8811:28;8881:17;;;8877:21;;8870:28;8940:17;;;8936:21;;8929:28;9000:17;;;8996:21;;;8989:28;8574:12;;;;8570:23;;;8595:1;8566:31;8251:20;;;8240:32;;;8625:12;;;;8294:21;;;;8499:16;;;;8616:21;;;;9059:11;;;;;-1:-1:-1;;7440:1660:0;;;;;:::o;6499:400::-;6637:10;;;6636:62;;-1:-1:-1;6653:39:0;;-1:-1:-1;;;6653:39:0;;-1:-1:-1;;;;;6653:15:0;;;;;:39;;6677:4;;6684:7;;6653:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;6636:62;6615:143;;;;-1:-1:-1;;;6615:143:0;;;;;;;:::i;:::-;6768:124;6801:5;6843:22;;;6867:7;6876:5;6820:62;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6820:62:0;;;;;;;;;;;;;;-1:-1:-1;;;;;6820:62:0;-1:-1:-1;;;;;;6820:62:0;;;;;;;;;;6768:19;:124::i;:::-;6499:400;;;:::o;36295:599::-;-1:-1:-1;;;;;36422:20:0;;36414:36;;;;-1:-1:-1;;;36414:36:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36498:23:0;;36490:39;;;;-1:-1:-1;;;36490:39:0;;;;;;;:::i;:::-;36568:47;36589:6;36597:9;36608:6;36568:20;:47::i;:::-;-1:-1:-1;;;;;36650:17:0;;36626:21;36650:17;;;:9;:17;;;;;;36685:23;;;;36677:39;;;;-1:-1:-1;;;36677:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36754:17:0;;;;;;;:9;:17;;;;;;36774:22;;;36754:42;;36806:20;;;;;;;;;;:30;;;;;;36852:35;;;;;;36790:6;;36852:35;:::i;:::-;;;;;;;;36295:599;;;;:::o;16720:117::-;-1:-1:-1;;;;;16771:25:0;:15;:25;;;;;;;;;;16799:12;16601:1;16799:31;16771:59;;16720:117::o;37224:464::-;-1:-1:-1;;;;;37299:21:0;;37291:37;;;;-1:-1:-1;;;37291:37:0;;;;;;;:::i;:::-;37365:49;37386:7;37403:1;37407:6;37365:20;:49::i;:::-;-1:-1:-1;;;;;37450:18:0;;37425:22;37450:18;;;:9;:18;;;;;;37486:24;;;;37478:40;;;;-1:-1:-1;;;37478:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37552:18:0;;;;;;:9;:18;;;;;;37573:23;;;37552:44;;37606:12;:22;;;;;;;37644:37;37552:18;;;37644:37;;;;37590:6;;37644:37;:::i;5973:239::-;6085:120;6118:5;6160:23;;;6185:2;6189:5;6137:58;;;;;;;;;:::i;6218:275::-;6356:130;6389:5;6431:27;;;6460:4;6466:2;6470:5;6408:68;;;;;;;;;;:::i;6356:130::-;6218:275;;;;:::o;36900:318::-;-1:-1:-1;;;;;36975:21:0;;36967:37;;;;-1:-1:-1;;;36967:37:0;;;;;;;:::i;:::-;37039:49;37068:1;37072:7;37081:6;37039:20;:49::i;:::-;37099:12;:22;;;;;;-1:-1:-1;;;;;37131:18:0;;37099:12;37131:18;;;-1:-1:-1;37131:18:0;;;;;;:28;;;;;;37174:37;;;;;37115:6;;37174:37;:::i;:::-;;;;;;;;36900:318;;:::o;38058:3904::-;38167:18;38195;38223:23;38256:24;38290;38359:15;:22;38345:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38345:37:0;;38335:47;;38416:15;:22;38402:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38402:37:0;-1:-1:-1;38539:131:0;;-1:-1:-1;;;38539:131:0;;38392:47;;-1:-1:-1;38450:20:0;;;;17223:42;;38539:43;;:131;;38600:6;;38624;;38648:8;;38539:131;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;38511:184:0;;:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38449:248;;;;;;;;;38707:26;;:::i;:::-;38744:16;38770;38812:79;38853:15;38869:1;38853:18;;;;;;;;;;;;;;:28;;;38812:27;:79::i;:::-;-1:-1:-1;;;;;38797:94:0;;;38957:18;;38916:79;;38957:15;;38797:12;;38957:18;;;;;;;;;;:28;;;38916:27;:79::i;:::-;-1:-1:-1;;;;;38901:94:0;:12;;;:94;39017:18;;:15;;39033:1;;39017:18;;;;;;;;;;:25;;;39006:36;;;;39064:15;39105:1;39080:15;:22;:26;39064:43;;;;;;;;;;;;;;:50;;;39053:61;;;;39129:8;39124:2832;39147:15;:22;39143:1;:26;;;39124:2832;;;39223:1;39194:15;39210:1;39194:18;;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;39194:30:0;;39190:285;;;39259:17;17134:42;-1:-1:-1;;;;;39304:82:0;;39387:15;39403:1;39387:18;;;;;;;;;;;;;;;;:26;;;39304:110;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39244:170;;;;;;;;;;;;;39451:9;39432:28;;;;39190:285;;39489:39;;:::i;:::-;39570:87;39615:15;39631:1;39615:18;;;;;;;;;39570:87;-1:-1:-1;;;;;39542:115:0;;;39744:18;;39699:87;;39744:15;;:18;;;;;;;;;39699:87;-1:-1:-1;;;;;39671:115:0;:25;;;:115;39820:18;;:15;;:18;;;;;;;;;;;;;;;;:28;;;39805:43;;:11;:43;;;39801:2145;;40485:8;40440:15;40456:1;40440:18;;;;;;;;;;;;;;;;:25;;;39898:567;;:539;39935:399;39976:182;40021:10;:12;;;40063:10;:12;;;40120:10;:12;;;40105:10;:12;;;:27;39976:15;:182::i;:::-;40236:25;;40184;;;;:77;;;;39935:15;:399::i;:::-;40394:25;;-1:-1:-1;;;7385:27:0;39898:15;:539::i;:::-;:567;39897:596;;;;;;39868:7;39876:1;39868:10;;;;;;;;;;;;;;;:625;;;;;40525:7;40533:1;40525:10;;;;;;;;;;;;;;;;40511:24;;;;39801:2145;;;40575:15;40591:1;40575:18;;;;;;;;;;;;;;;;:28;;;40560:43;;:11;:43;;;40556:1390;;40896:8;40851:15;40867:1;40851:18;;;;;;;;;;;;;;;;:25;;;40653:223;;:195;40718:23;:25;;;40690:23;:25;;;:53;-1:-1:-1;;;40818:10:0;:12;;;40803:10;:12;;;:27;40653:15;:195::i;:::-;:223;40652:252;;;;;;40623:7;40631:1;40623:10;;;;;;;;;;;;;;;:281;;;;;40936:7;40944:1;40936:10;;;;;;;;;;;;;;;;40922:24;;;;40556:1390;;;41552:8;41507:15;41523:1;41507:18;;;;;;;;;;;;;;;;:25;;;41015:517;;:489;41052:362;41093:182;41138:10;:12;;;41180:10;:12;;;41237:10;:12;;;41222:10;:12;;;:27;41093:15;:182::i;:::-;41301:25;;;;-1:-1:-1;;;;;41301:40:0;;;;;41052:15;:362::i;:::-;-1:-1:-1;;;41474:12:0;-1:-1:-1;;;;;41015:489:0;:15;:489::i;:::-;:517;41014:546;;;;;;40985:7;40993:1;40985:10;;;;;;;;;;;;;;;:575;;;;;41839:8;41794:15;41810:1;41794:18;;;;;;;;;;;;;;;;:25;;;41609:210;;:182;41661:23;:25;;;41646:12;-1:-1:-1;;;;;41646:40:0;;-1:-1:-1;;;41761:10:0;:12;;;41746:10;:12;;;:27;41609:15;:182::i;:::-;:210;41608:239;;;;;;41579:7;41587:1;41579:10;;;;;;;;;;;;;;;:268;;;;;41879:7;41887:1;41879:10;;;;;;;;;;;;;;;;41865:24;;;;41921:7;41929:1;41921:10;;;;;;;;;;;;;;;;41907:24;;;;40556:1390;-1:-1:-1;39171:3:0;;39124:2832;;;;38058:3904;;;;;;;;;;;;:::o;41968:2579::-;42261:21;42284;42321:15;:22;42347:1;42321:27;42317:89;;;-1:-1:-1;42372:10:0;;-1:-1:-1;42384:10:0;42364:31;;42317:89;42416:25;;:::i;:::-;42524:131;;-1:-1:-1;;;42524:131:0;;42452:20;;17223:42;;42524:43;;:131;;42585:6;;42609;;42633:8;;42524:131;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42496:184:0;;:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42451:231;;;;;;;;42706:355;42759:12;42785:57;42813:15;42829:1;42813:18;;;;;;;42785:57;42856;42884:15;42900:1;42884:18;;;;;;;42856:57;42927:55;42943:14;42959:7;42967:1;42959:10;;;;;;;;;;;;;;42971;42927:15;:55::i;:::-;42996;43012:14;43028:7;43036:1;43028:10;;;;;;;42996:55;42706:39;:355::i;:::-;-1:-1:-1;;;;;42692:369:0;;;43092:22;;-1:-1:-1;;43092:26:0;;;43142:391;;43195:12;;43221:66;;43092:15;;:26;;43249:27;;;;;43221:66;43301;43329:15;43345:10;43329:27;;;;;;;43301:66;43381:64;43397:14;43413:7;43421:10;43413:19;;;;;;;;;;;;;;43434:10;43381:15;:64::i;:::-;43459;43475:14;43491:7;43499:10;43491:19;;;;;;;43142:391;-1:-1:-1;;;;;43128:405:0;:11;;;:405;43638:18;;:15;;43654:1;;43638:18;;;;;;;;;;:25;;;43624:39;;:9;:11;;;:39;43575:15;43591:10;43575:27;;;;;;;;;;;;;;:34;;;43561:48;;:9;:11;;;:48;:102;43544:997;;;43734:1;43706:15;43722:1;43706:18;;;;;;;;;;;;;;:25;;;43692:39;;:9;:11;;;:39;:43;43688:362;;;43771:196;43808:10;43854:15;43870:10;43854:27;;;;;;;;;;;;;;:34;;;43840:48;;:9;:11;;;:48;43924:15;43940:1;43924:18;;;;;;;;;;;;;;:25;;;43910:39;;:9;:11;;;:39;43771:15;:196::i;:::-;43755:212;;43688:362;;;44034:1;44018:17;;43688:362;44079:10;44063:26;;43544:997;;;44136:10;44120:26;;44215:1;44178:15;44194:10;44178:27;;;;;;;;;;;;;;:34;;;44164:48;;:9;:11;;;:48;:52;44160:371;;;44252:196;44289:10;44335:15;44351:1;44335:18;;;;;;;;;;;;;;:25;;;44321:39;;:9;:11;;;:39;44396:15;44412:10;44396:27;;;;;;;;;;;;;;:34;;;44382:48;;:9;:11;;;:48;44252:15;:196::i;:::-;44236:212;;44160:371;;;44515:1;44499:17;;44160:371;41968:2579;;;;;;;;;;;;;;:::o;6905:417::-;6985:23;7019:109;7060:4;7019:109;;;;;;;;;;;;;-1:-1:-1;;;7019:109:0;;;7027:5;-1:-1:-1;;;;;7019:27:0;;;:109;;;;;:::i;:::-;7142:17;;6985:143;;-1:-1:-1;7142:21:0;7138:178;;7215:10;7204:30;;;;;;;;;;;;:::i;:::-;7179:126;;;;-1:-1:-1;;;7179:126:0;;;;;;;:::i;9226:2579::-;9301:20;9337:15;9370:1;9363:4;:8;;;:57;;9414:4;9407:12;;9363:57;;;9390:4;9383:12;;9382:13;;9363:57;9337:83;-1:-1:-1;9210:9:0;9438:28;;;9430:42;;;;-1:-1:-1;;;9430:42:0;;;;;;;:::i;:::-;9483:13;9517:3;9507:13;;:109;;-1:-1:-1;;;9507:109:0;;;9536:34;9507:109;9483:133;;;-1:-1:-1;9640:3:0;9630:13;;:18;9626:95;;9679:34;9671:42;9718:3;9670:51;9626:95;9745:3;9735:13;;:18;9731:95;;9784:34;9776:42;9823:3;9775:51;9731:95;9850:3;9840:13;;:18;9836:95;;9889:34;9881:42;9928:3;9880:51;9836:95;9955:4;9945:14;;:19;9941:96;;9995:34;9987:42;10034:3;9986:51;9941:96;10061:4;10051:14;;:19;10047:96;;10101:34;10093:42;10140:3;10092:51;10047:96;10167:4;10157:14;;:19;10153:96;;10207:34;10199:42;10246:3;10198:51;10153:96;10273:4;10263:14;;:19;10259:96;;10313:34;10305:42;10352:3;10304:51;10259:96;10379:5;10369:15;;:20;10365:97;;10420:34;10412:42;10459:3;10411:51;10365:97;10486:5;10476:15;;:20;10472:97;;10527:34;10519:42;10566:3;10518:51;10472:97;10593:5;10583:15;;:20;10579:97;;10634:34;10626:42;10673:3;10625:51;10579:97;10700:5;10690:15;;:20;10686:97;;10741:34;10733:42;10780:3;10732:51;10686:97;10807:6;10797:16;;:21;10793:98;;10849:34;10841:42;10888:3;10840:51;10793:98;10915:6;10905:16;;:21;10901:98;;10957:34;10949:42;10996:3;10948:51;10901:98;11023:6;11013:16;;:21;11009:98;;11065:34;11057:42;11104:3;11056:51;11009:98;11131:6;11121:16;;:21;11117:98;;11173:34;11165:42;11212:3;11164:51;11117:98;11239:7;11229:17;;:22;11225:98;;11282:33;11274:41;11320:3;11273:50;11225:98;11347:7;11337:17;;:22;11333:97;;11390:32;11382:40;11427:3;11381:49;11333:97;11454:7;11444:17;;:22;11440:95;;11497:30;11489:38;11532:3;11488:47;11440:95;11559:7;11549:17;;:22;11545:90;;11602:25;11594:33;11632:3;11593:42;11545:90;11657:1;11650:4;:8;;;11646:47;;;11688:5;-1:-1:-1;;11668:25:0;;;;;;11660:33;;11646:47;11766:7;11757:5;:17;:22;:30;;11786:1;11757:30;;;11782:1;11757:30;11740:48;;11750:2;11741:5;:11;;11740:48;11704:94;;9226:2579;;;;;:::o;13042:1061::-;13245:17;13294:13;-1:-1:-1;;;;;13278:29:0;:13;-1:-1:-1;;;;;13278:29:0;;13274:110;;;13355:13;;13370;13274:110;13415:13;-1:-1:-1;;;;;13399:29:0;:12;-1:-1:-1;;;;;13399:29:0;;13395:702;;13456:123;13496:13;13527;13558:7;13456:22;:123::i;:::-;13444:135;;13395:702;;;13615:13;-1:-1:-1;;;;;13600:28:0;:12;-1:-1:-1;;;;;13600:28:0;;13596:501;;;13644:18;13677:60;13700:12;13714:13;13729:7;13677:22;:60::i;:::-;13644:93;;13751:18;13784:60;13807:13;13822:12;13836:7;13784:22;:60::i;:::-;13751:93;;13884:10;-1:-1:-1;;;;;13871:23:0;:10;-1:-1:-1;;;;;13871:23:0;;:49;;13910:10;13871:49;;;13897:10;13871:49;13859:61;;13596:501;;;;;13963:123;14003:13;14034;14065:7;13963:22;:123::i;:::-;13951:135;;13596:501;13042:1061;;;;;;;:::o;4072:223::-;4205:12;4236:52;4258:6;4266:4;4272:1;4275:12;4236:21;:52::i;:::-;4229:59;4072:223;-1:-1:-1;;;;4072:223:0:o;11956:587::-;12104:17;12153:13;-1:-1:-1;;;;;12137:29:0;:13;-1:-1:-1;;;;;12137:29:0;;12133:110;;;12214:13;;12229;12133:110;12253:20;12284:63;12300:13;-1:-1:-1;;;;;12284:63:0;12315:13;-1:-1:-1;;;;;12284:63:0;-1:-1:-1;;;12284:15:0;:63::i;:::-;12253:94;;12372:164;12395:131;12428:7;12453:12;12499:13;12483;:29;-1:-1:-1;;;;;12395:131:0;:15;:131::i;:::-;12372:9;:164::i;12549:487::-;12697:17;12746:13;-1:-1:-1;;;;;12730:29:0;:13;-1:-1:-1;;;;;12730:29:0;;12726:110;;;12807:13;;12822;12726:110;12861:168;12884:135;12917:7;-1:-1:-1;;;12992:13:0;12976;:29;-1:-1:-1;;;;;12884:135:0;:15;:135::i;4633:545::-;4798:12;4868:5;4843:21;:30;;4822:112;;;;-1:-1:-1;;;4822:112:0;;;;;;;:::i;:::-;4952:18;4963:6;4952:10;:18::i;:::-;4944:33;;;;-1:-1:-1;;;4944:33:0;;;;;;;:::i;:::-;5022:12;5036:23;5071:6;-1:-1:-1;;;;;5071:11:0;5090:5;5097:4;5071:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5021:81;;;;5119:52;5137:7;5146:10;5158:12;5119:17;:52::i;:::-;5112:59;4633:545;-1:-1:-1;;;;;;;4633:545:0:o;11840:110::-;11941:1;-1:-1:-1;;;;;11921:21:0;;;;11913:30;;;;;5184:190;5313:20;5359:8;;;5184:190::o;5380:533::-;5526:12;5554:7;5550:357;;;-1:-1:-1;5584:10:0;5577:17;;5550:357;5629:17;;:21;5625:272;;5730:10;5724:17;5790:15;5777:10;5773:2;5769:19;5762:44;5679:145;5869:12;5862:20;;-1:-1:-1;;;5862:20:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:142:1:-;95:13;;117:33;95:13;117:33;:::i;161:134::-;229:20;;258:31;229:20;258:31;:::i;300:138::-;379:13;;401:31;379:13;401:31;:::i;443:194::-;524:13;;-1:-1:-1;;;;;566:46:1;;556:57;;546:2;;627:1;624;617:12;642:136;711:20;;740:32;711:20;740:32;:::i;783:140::-;863:13;;885:32;863:13;885:32;:::i;928:259::-;;1040:2;1028:9;1019:7;1015:23;1011:32;1008:2;;;1061:6;1053;1046:22;1008:2;1105:9;1092:23;1124:33;1151:5;1124:33;:::i;1192:263::-;;1315:2;1303:9;1294:7;1290:23;1286:32;1283:2;;;1336:6;1328;1321:22;1283:2;1373:9;1367:16;1392:33;1419:5;1392:33;:::i;1460:402::-;;;1589:2;1577:9;1568:7;1564:23;1560:32;1557:2;;;1610:6;1602;1595:22;1557:2;1654:9;1641:23;1673:33;1700:5;1673:33;:::i;:::-;1725:5;-1:-1:-1;1782:2:1;1767:18;;1754:32;1795:35;1754:32;1795:35;:::i;:::-;1849:7;1839:17;;;1547:315;;;;;:::o;1867:470::-;;;;2013:2;2001:9;1992:7;1988:23;1984:32;1981:2;;;2034:6;2026;2019:22;1981:2;2078:9;2065:23;2097:33;2124:5;2097:33;:::i;:::-;2149:5;-1:-1:-1;2206:2:1;2191:18;;2178:32;2219:35;2178:32;2219:35;:::i;:::-;1971:366;;2273:7;;-1:-1:-1;;;2327:2:1;2312:18;;;;2299:32;;1971:366::o;2342:396::-;;;2468:2;2456:9;2447:7;2443:23;2439:32;2436:2;;;2489:6;2481;2474:22;2436:2;2533:9;2520:23;2552:33;2579:5;2552:33;:::i;:::-;2604:5;-1:-1:-1;2661:2:1;2646:18;;2633:32;2674;2633;2674;:::i;2743:327::-;;;2872:2;2860:9;2851:7;2847:23;2843:32;2840:2;;;2893:6;2885;2878:22;2840:2;2937:9;2924:23;2956:33;2983:5;2956:33;:::i;:::-;3008:5;3060:2;3045:18;;;;3032:32;;-1:-1:-1;;;2830:240:1:o;3075:1793::-;;3222:2;3265;3253:9;3244:7;3240:23;3236:32;3233:2;;;3286:6;3278;3271:22;3233:2;3331:9;3318:23;3360:18;3401:2;3393:6;3390:14;3387:2;;;3422:6;3414;3407:22;3387:2;3465:6;3454:9;3450:22;3440:32;;3510:7;3503:4;3499:2;3495:13;3491:27;3481:2;;3537:6;3529;3522:22;3481:2;3578;3565:16;3600:2;3596;3593:10;3590:2;;;3606:9;3590:2;3637:36;3669:2;3664;3660;3656:11;3652:20;3637:36;:::i;:::-;3707:15;;;3738:12;;;;3770:11;;;3800:4;3831:11;;;3823:20;;3819:29;;3816:42;-1:-1:-1;3813:2:1;;;3876:6;3868;3861:22;3813:2;3903:6;3894:15;;3918:920;3932:2;3929:1;3926:9;3918:920;;;4003:2;3997:3;3988:7;3984:17;3980:26;3977:2;;;4024:6;4016;4009:22;3977:2;4056;4091;4085:9;4137:2;4129:6;4125:15;4194:6;4182:10;4179:22;4174:2;4162:10;4159:18;4156:46;4153:2;;;4205:9;4153:2;4229:22;;4277:17;;-1:-1:-1;;;;;4327:31:1;;4317:42;;4307:2;;4378:6;4370;4363:22;4307:2;4400:21;;4462:12;;;4449:26;4488:33;4449:26;4488:33;:::i;:::-;4541:15;;;4534:32;4603;4622:12;;;4603:32;:::i;:::-;4598:2;4590:6;4586:15;4579:57;4659:2;4649:12;;4698:33;4727:2;4722:3;4718:12;4698:33;:::i;:::-;4681:15;;;4674:58;;;;4745:19;;3950:1;3943:9;;;;;4784:12;;;;4816;;;;3918:920;;;-1:-1:-1;4857:5:1;;3202:1666;-1:-1:-1;;;;;;;;;3202:1666:1:o;4873:257::-;;4993:2;4981:9;4972:7;4968:23;4964:32;4961:2;;;5014:6;5006;4999:22;4961:2;5051:9;5045:16;5070:30;5094:5;5070:30;:::i;5135:212::-;;5282:3;5270:9;5261:7;5257:23;5253:33;5250:2;;;5304:6;5296;5289:22;5250:2;-1:-1:-1;5332:9:1;5240:107;-1:-1:-1;5240:107:1:o;5352:852::-;;5497:3;5485:9;5476:7;5472:23;5468:33;5465:2;;;5519:6;5511;5504:22;5465:2;5557;5551:9;5599:3;5591:6;5587:16;5669:6;5657:10;5654:22;5633:18;5621:10;5618:34;5615:62;5612:2;;;5680:9;5612:2;5711:10;5707:2;5700:22;;5759:9;5746:23;5738:6;5731:39;5831:2;5820:9;5816:18;5803:32;5798:2;5790:6;5786:15;5779:57;5897:2;5886:9;5882:18;5869:32;5864:2;5856:6;5852:15;5845:57;5963:2;5952:9;5948:18;5935:32;5930:2;5922:6;5918:15;5911:57;6018:3;6007:9;6003:19;5990:33;6032;6059:5;6032:33;:::i;:::-;6093:3;6081:16;;6074:31;6167:3;6152:19;;;6139:33;6121:16;;;6114:59;;;;-1:-1:-1;6085:6:1;5455:749;-1:-1:-1;5455:749:1:o;6209:215::-;;6359:3;6347:9;6338:7;6334:23;6330:33;6327:2;;;6381:6;6373;6366:22;6429:787;;6577:3;6565:9;6556:7;6552:23;6548:33;6545:2;;;6599:6;6591;6584:22;6545:2;6637;6631:9;6679:3;6671:6;6667:16;6749:6;6737:10;6734:22;6713:18;6701:10;6698:34;6695:62;6692:2;;;6760:9;6692:2;6791:10;6787:2;6780:22;;6839:9;6826:23;6818:6;6811:39;6911:2;6900:9;6896:18;6883:32;6878:2;6870:6;6866:15;6859:57;6977:2;6966:9;6962:18;6949:32;6944:2;6936:6;6932:15;6925:57;7032:2;7021:9;7017:18;7004:32;7045:33;7072:5;7045:33;:::i;:::-;7106:2;7094:15;;7087:30;7179:3;7164:19;;;7151:33;7133:16;;;7126:59;;;;-1:-1:-1;7098:6:1;6535:681;-1:-1:-1;6535:681:1:o;7221:342::-;;;;7378:2;7366:9;7357:7;7353:23;7349:32;7346:2;;;7399:6;7391;7384:22;7346:2;7427:42;7459:9;7427:42;:::i;:::-;7417:52;;7509:2;7498:9;7494:18;7488:25;7478:35;;7553:2;7542:9;7538:18;7532:25;7522:35;;7336:227;;;;;:::o;7568:257::-;;7679:2;7667:9;7658:7;7654:23;7650:32;7647:2;;;7700:6;7692;7685:22;7647:2;7744:9;7731:23;7763:32;7789:5;7763:32;:::i;7830:1099::-;;;;;;;;8045:3;8033:9;8024:7;8020:23;8016:33;8013:2;;;8067:6;8059;8052:22;8013:2;8104:9;8098:16;8123:33;8150:5;8123:33;:::i;:::-;8225:2;8210:18;;8204:25;8175:5;;-1:-1:-1;8238:33:1;8204:25;8238:33;:::i;:::-;8342:2;8327:18;;8321:25;8290:7;;-1:-1:-1;8355:34:1;8321:25;8355:34;:::i;:::-;8460:2;8445:18;;8439:25;8408:7;;-1:-1:-1;8473:34:1;8439:25;8473:34;:::i;:::-;8578:3;8563:19;;8557:26;8526:7;;-1:-1:-1;8592:34:1;8557:26;8592:34;:::i;:::-;8697:3;8682:19;;8676:26;8645:7;;-1:-1:-1;8746:4:1;8733:18;;8721:31;;8711:2;;8771:6;8763;8756:22;8711:2;8851:3;8836:19;;8830:26;8799:7;;-1:-1:-1;8865:32:1;8830:26;8865:32;:::i;:::-;8916:7;8906:17;;;8003:926;;;;;;;;;;:::o;8934:190::-;;9046:2;9034:9;9025:7;9021:23;9017:32;9014:2;;;9067:6;9059;9052:22;9014:2;-1:-1:-1;9095:23:1;;9004:120;-1:-1:-1;9004:120:1:o;9129:194::-;;9252:2;9240:9;9231:7;9227:23;9223:32;9220:2;;;9273:6;9265;9258:22;9220:2;-1:-1:-1;9301:16:1;;9210:113;-1:-1:-1;9210:113:1:o;9328:404::-;;;;;9502:3;9490:9;9481:7;9477:23;9473:33;9470:2;;;9524:6;9516;9509:22;9470:2;9558:9;9552:16;9542:26;;9587:51;9634:2;9623:9;9619:18;9587:51;:::i;:::-;9678:2;9663:18;;9657:25;9722:2;9707:18;;;9701:25;9460:272;;9577:61;;-1:-1:-1;9460:272:1;-1:-1:-1;;;9460:272:1:o;9737:255::-;;;9877:2;9865:9;9856:7;9852:23;9848:32;9845:2;;;9898:6;9890;9883:22;9845:2;-1:-1:-1;;9926:16:1;;9982:2;9967:18;;;9961:25;9926:16;;9961:25;;-1:-1:-1;9835:157:1:o;9997:1224::-;;;;;;;;;;;;;10303:3;10291:9;10282:7;10278:23;10274:33;10271:2;;;10325:6;10317;10310:22;10271:2;10362:9;10356:16;10412:26;10405:5;10401:38;10394:5;10391:49;10381:2;;10459:6;10451;10444:22;10381:2;10487:5;-1:-1:-1;10511:51:1;10558:2;10543:18;;10511:51;:::i;:::-;10501:61;;10581:51;10628:2;10617:9;10613:18;10581:51;:::i;:::-;10571:61;;10651:51;10698:2;10687:9;10683:18;10651:51;:::i;:::-;10641:61;;10721:51;10767:3;10756:9;10752:19;10721:51;:::i;:::-;10711:61;;10791:50;10836:3;10825:9;10821:19;10791:50;:::i;:::-;10781:60;;10860:50;10905:3;10894:9;10890:19;10860:50;:::i;:::-;10850:60;;10929:52;10976:3;10965:9;10961:19;10929:52;:::i;:::-;10919:62;;11021:3;11010:9;11006:19;11000:26;10990:36;;11066:3;11055:9;11051:19;11045:26;11035:36;;11091:52;11138:3;11127:9;11123:19;11091:52;:::i;:::-;11080:63;;11163:52;11210:3;11199:9;11195:19;11163:52;:::i;:::-;11152:63;;10261:960;;;;;;;;;;;;;;:::o;11226:106::-;-1:-1:-1;;;;;11294:31:1;11282:44;;11272:60::o;11337:93::-;11414:1;11403:20;11391:33;;11381:49::o;11435:94::-;11513:8;11502:20;11490:33;;11480:49::o;11534:274::-;;11701:6;11695:13;11717:53;11763:6;11758:3;11751:4;11743:6;11739:17;11717:53;:::i;:::-;11786:16;;;;;11671:137;-1:-1:-1;;11671:137:1:o;11813:203::-;-1:-1:-1;;;;;11977:32:1;;;;11959:51;;11947:2;11932:18;;11914:102::o;12237:304::-;-1:-1:-1;;;;;12467:15:1;;;12449:34;;12519:15;;12514:2;12499:18;;12492:43;12399:2;12384:18;;12366:175::o;12546:388::-;-1:-1:-1;;;;;12802:15:1;;;12784:34;;12854:15;;;;12849:2;12834:18;;12827:43;12918:8;12906:21;;;12901:2;12886:18;;12879:49;12734:2;12719:18;;12701:233::o;12939:375::-;-1:-1:-1;;;;;13197:15:1;;;13179:34;;13249:15;;;;13244:2;13229:18;;13222:43;13296:2;13281:18;;13274:34;;;;13129:2;13114:18;;13096:218::o;13319:274::-;-1:-1:-1;;;;;13511:32:1;;;;13493:51;;13575:2;13560:18;;13553:34;13481:2;13466:18;;13448:145::o;13598:187::-;13763:14;;13756:22;13738:41;;13726:2;13711:18;;13693:92::o;13790:383::-;;13939:2;13928:9;13921:21;13971:6;13965:13;14014:6;14009:2;13998:9;13994:18;13987:34;14030:66;14089:6;14084:2;14073:9;14069:18;14064:2;14056:6;14052:15;14030:66;:::i;:::-;14157:2;14136:15;-1:-1:-1;;14132:29:1;14117:45;;;;14164:2;14113:54;;13911:262;-1:-1:-1;;13911:262:1:o;14178:326::-;14380:2;14362:21;;;14419:1;14399:18;;;14392:29;-1:-1:-1;;;14452:2:1;14437:18;;14430:33;14495:2;14480:18;;14352:152::o;14509:326::-;14711:2;14693:21;;;14750:1;14730:18;;;14723:29;-1:-1:-1;;;14783:2:1;14768:18;;14761:33;14826:2;14811:18;;14683:152::o;14840:326::-;15042:2;15024:21;;;15081:1;15061:18;;;15054:29;-1:-1:-1;;;15114:2:1;15099:18;;15092:33;15157:2;15142:18;;15014:152::o;15171:326::-;15373:2;15355:21;;;15412:1;15392:18;;;15385:29;-1:-1:-1;;;15445:2:1;15430:18;;15423:33;15488:2;15473:18;;15345:152::o;15502:326::-;15704:2;15686:21;;;15743:1;15723:18;;;15716:29;-1:-1:-1;;;15776:2:1;15761:18;;15754:33;15819:2;15804:18;;15676:152::o;15833:326::-;16035:2;16017:21;;;16074:1;16054:18;;;16047:29;-1:-1:-1;;;16107:2:1;16092:18;;16085:33;16150:2;16135:18;;16007:152::o;16164:326::-;16366:2;16348:21;;;16405:1;16385:18;;;16378:29;-1:-1:-1;;;16438:2:1;16423:18;;16416:33;16481:2;16466:18;;16338:152::o;16495:325::-;16697:2;16679:21;;;16736:1;16716:18;;;16709:29;-1:-1:-1;;;16769:2:1;16754:18;;16747:32;16811:2;16796:18;;16669:151::o;16825:326::-;17027:2;17009:21;;;17066:1;17046:18;;;17039:29;-1:-1:-1;;;17099:2:1;17084:18;;17077:33;17142:2;17127:18;;16999:152::o;17156:326::-;17358:2;17340:21;;;17397:1;17377:18;;;17370:29;-1:-1:-1;;;17430:2:1;17415:18;;17408:33;17473:2;17458:18;;17330:152::o;17487:325::-;17689:2;17671:21;;;17728:1;17708:18;;;17701:29;-1:-1:-1;;;17761:2:1;17746:18;;17739:32;17803:2;17788:18;;17661:151::o;17817:326::-;18019:2;18001:21;;;18058:1;18038:18;;;18031:29;-1:-1:-1;;;18091:2:1;18076:18;;18069:33;18134:2;18119:18;;17991:152::o;18148:326::-;18350:2;18332:21;;;18389:1;18369:18;;;18362:29;-1:-1:-1;;;18422:2:1;18407:18;;18400:33;18465:2;18450:18;;18322:152::o;18479:324::-;18681:2;18663:21;;;18720:1;18700:18;;;18693:29;-1:-1:-1;;;18753:2:1;18738:18;;18731:31;18794:2;18779:18;;18653:150::o;18808:326::-;19010:2;18992:21;;;19049:1;19029:18;;;19022:29;-1:-1:-1;;;19082:2:1;19067:18;;19060:33;19125:2;19110:18;;18982:152::o;19139:326::-;19341:2;19323:21;;;19380:1;19360:18;;;19353:29;-1:-1:-1;;;19413:2:1;19398:18;;19391:33;19456:2;19441:18;;19313:152::o;19470:326::-;19672:2;19654:21;;;19711:1;19691:18;;;19684:29;-1:-1:-1;;;19744:2:1;19729:18;;19722:33;19787:2;19772:18;;19644:152::o;19801:326::-;20003:2;19985:21;;;20042:1;20022:18;;;20015:29;-1:-1:-1;;;20075:2:1;20060:18;;20053:33;20118:2;20103:18;;19975:152::o;20132:326::-;20334:2;20316:21;;;20373:1;20353:18;;;20346:29;-1:-1:-1;;;20406:2:1;20391:18;;20384:33;20449:2;20434:18;;20306:152::o;20463:326::-;20665:2;20647:21;;;20704:1;20684:18;;;20677:29;-1:-1:-1;;;20737:2:1;20722:18;;20715:33;20780:2;20765:18;;20637:152::o;20794:325::-;20996:2;20978:21;;;21035:1;21015:18;;;21008:29;-1:-1:-1;;;21068:2:1;21053:18;;21046:32;21110:2;21095:18;;20968:151::o;21124:326::-;21326:2;21308:21;;;21365:1;21345:18;;;21338:29;-1:-1:-1;;;21398:2:1;21383:18;;21376:33;21441:2;21426:18;;21298:152::o;21455:326::-;21657:2;21639:21;;;21696:1;21676:18;;;21669:29;-1:-1:-1;;;21729:2:1;21714:18;;21707:33;21772:2;21757:18;;21629:152::o;21786:326::-;21988:2;21970:21;;;22027:1;22007:18;;;22000:29;-1:-1:-1;;;22060:2:1;22045:18;;22038:33;22103:2;22088:18;;21960:152::o;22117:326::-;22319:2;22301:21;;;22358:1;22338:18;;;22331:29;-1:-1:-1;;;22391:2:1;22376:18;;22369:33;22434:2;22419:18;;22291:152::o;22448:325::-;22650:2;22632:21;;;22689:1;22669:18;;;22662:29;-1:-1:-1;;;22722:2:1;22707:18;;22700:32;22764:2;22749:18;;22622:151::o;22778:572::-;23003:13;;22985:32;;23077:4;23065:17;;;23059:24;-1:-1:-1;;;;;23055:50:1;23033:20;;;23026:80;23153:4;23141:17;;;23135:24;-1:-1:-1;;;;;23250:21:1;;;23228:20;;;23221:51;;;;23332:4;23320:17;;;23314:24;23310:33;23288:20;;;23281:63;;;;22972:3;22957:19;;22939:411::o;23355:558::-;;23569:3;23558:9;23554:19;23546:27;;23606:6;23600:13;23589:9;23582:32;-1:-1:-1;;;;;23674:4:1;23666:6;23662:17;23656:24;23652:65;23645:4;23634:9;23630:20;23623:95;23774:4;23766:6;23762:17;23756:24;23749:4;23738:9;23734:20;23727:54;23837:4;23829:6;23825:17;23819:24;23812:4;23801:9;23797:20;23790:54;23900:4;23892:6;23888:17;23882:24;23875:4;23864:9;23860:20;23853:54;23536:377;;;;:::o;23918:793::-;24203:13;;-1:-1:-1;;;;;24199:22:1;;;24181:41;;24282:4;24270:17;;;24264:24;24260:33;;24238:20;;;24231:63;24354:4;24342:17;;;24336:24;24362:8;24332:39;24310:20;;;24303:69;24432:4;24420:17;;;24414:24;24410:33;;24388:20;;;24381:63;24500:4;24488:17;;;24482:24;24460:20;;;24453:54;24161:3;24551:17;;;24545:24;24523:20;;;24516:54;24626:4;24614:17;;;24608:24;24586:20;;;24579:54;24693:4;24681:17;;;24675:24;24671:33;24649:20;;;24642:63;;;;24130:3;24115:19;;24097:614::o;24716:580::-;;24930:3;24919:9;24915:19;24907:27;;24967:6;24961:13;24950:9;24943:32;25031:4;25023:6;25019:17;25013:24;25006:4;24995:9;24991:20;24984:54;25094:4;25086:6;25082:17;25076:24;25069:4;25058:9;25054:20;25047:54;25157:4;25149:6;25145:17;25139:24;25132:4;25121:9;25117:20;25110:54;25220:4;25212:6;25208:17;25202:24;25195:4;25184:9;25180:20;25173:54;25283:4;25275:6;25271:17;25265:24;25258:4;25247:9;25243:20;25236:54;24897:399;;;;:::o;25301:1230::-;;25487:3;25476:9;25472:19;25464:27;;25500:46;25536:9;25527:6;25521:13;25500:46;:::i;:::-;25593:4;25585:6;25581:17;25575:24;25608:56;25658:4;25647:9;25643:20;25629:12;25608:56;:::i;:::-;;25713:4;25705:6;25701:17;25695:24;25728:57;25779:4;25768:9;25764:20;25748:14;25728:57;:::i;:::-;;25834:4;25826:6;25822:17;25816:24;25849:56;25899:4;25888:9;25884:20;25868:14;25849:56;:::i;:::-;;25954:4;25946:6;25942:17;25936:24;25969:56;26019:4;26008:9;26004:20;25988:14;25969:56;:::i;:::-;;26081:4;26073:6;26069:17;26063:24;26056:4;26045:9;26041:20;26034:54;26144:4;26136:6;26132:17;26126:24;26119:4;26108:9;26104:20;26097:54;26207:4;26199:6;26195:17;26189:24;26182:4;26171:9;26167:20;26160:54;26233:6;26293:2;26285:6;26281:15;26275:22;26270:2;26259:9;26255:18;26248:50;;26317:6;26372:2;26364:6;26360:15;26354:22;26385:56;26437:2;26426:9;26422:18;26406:14;26385:56;:::i;:::-;-1:-1:-1;;26460:6:1;26508:15;;;26502:22;26482:18;;;;26475:50;25454:1077;:::o;26536:360::-;-1:-1:-1;;;;;26756:47:1;;;;26738:66;;26835:2;26820:18;;26813:34;;;;26878:2;26863:18;;26856:34;26726:2;26711:18;;26693:203::o;26901:188::-;27075:6;27063:19;;;;27045:38;;27033:2;27018:18;;27000:89::o;27094:203::-;-1:-1:-1;;;;;27258:32:1;;;;27240:51;;27228:2;27213:18;;27195:102::o;27302:452::-;-1:-1:-1;;;;;27541:32:1;;;;27523:51;;27621:1;27610:21;;;27605:2;27590:18;;27583:49;27668:21;;27663:2;27648:18;;27641:49;27738:8;27726:21;27721:2;27706:18;;27699:49;27510:3;27495:19;;27477:277::o;27759:190::-;27933:8;27921:21;;;;27903:40;;27891:2;27876:18;;27858:91::o;27954:177::-;28100:25;;;28088:2;28073:18;;28055:76::o;28136:184::-;28308:4;28296:17;;;;28278:36;;28266:2;28251:18;;28233:87::o;28325:242::-;28395:2;28389:9;28425:17;;;28472:18;28457:34;;28493:22;;;28454:62;28451:2;;;28519:9;28451:2;28546;28539:22;28369:198;;-1:-1:-1;28369:198:1:o;28572:258::-;28644:1;28654:113;28668:6;28665:1;28662:13;28654:113;;;28744:11;;;28738:18;28725:11;;;28718:39;28690:2;28683:10;28654:113;;;28785:6;28782:1;28779:13;28776:2;;;-1:-1:-1;;28820:1:1;28802:16;;28795:27;28625:205::o;28835:133::-;-1:-1:-1;;;;;28912:31:1;;28902:42;;28892:2;;28958:1;28955;28948:12;28973:120;29061:5;29054:13;29047:21;29040:5;29037:32;29027:2;;29083:1;29080;29073:12;29098:120;29187:5;29184:1;29173:20;29166:5;29163:31;29153:2;;29208:1;29205;29198:12;29223:119;29310:6;29303:5;29299:18;29292:5;29289:29;29279:2;;29332:1;29329;29322:12;29347:121;29434:8;29427:5;29423:20;29416:5;29413:31;29403:2;;29458:1;29455;29448:12" + }, + "methodIdentifiers": { + "addLiquidityEthForUniV3((uint256,uint256,uint256,uint256,address,uint256))": "70e032b1", + "addLiquidityForUniV3((uint256,uint256,uint256,uint256,address,uint256))": "33bc230a", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "cellarTickInfo(uint256)": "15723866", + "decimals()": "313ce567", + "fee()": "ddca3f43", + "feeLevel()": "7cf134cb", + "lastLockedBlock(address)": "9f3e8b34", + "name()": "06fdde03", + "owner()": "8da5cb5b", + "rebalance((uint184,int24,int24,uint24)[])": "135d4f24", + "reinvest()": "fdb5a03e", + "removeLiquidityEthFromUniV3((uint256,uint256,uint256,address,uint256))": "a2d96f5f", + "removeLiquidityFromUniV3((uint256,uint256,uint256,address,uint256))": "276cd920", + "setFee(uint16)": "8e005553", + "setValidator(address,bool)": "4623c91d", + "symbol()": "95d89b41", + "token0()": "0dfe1681", + "token1()": "d21220a7", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b", + "validator(address)": "223b3b7a" + } + } + }, + "FixedPoint96": { + "abi": [], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202908ae63db83a243e1047e39d92ea11280f08ea6228e5c7933f4e360938629da64736f6c63430007060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 ADDMOD 0xAE PUSH4 0xDB83A243 0xE1 DIV PUSH31 0x39D92EA11280F08EA6228E5C7933F4E360938629DA64736F6C634300070600 CALLER ", + "sourceMap": "7326:89:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202908ae63db83a243e1047e39d92ea11280f08ea6228e5c7933f4e360938629da64736f6c63430007060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 ADDMOD 0xAE PUSH4 0xDB83A243 0xE1 DIV PUSH31 0x39D92EA11280F08EA6228E5C7933F4E360938629DA64736F6C634300070600 CALLER ", + "sourceMap": "7326:89:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + }, + "FullMath": { + "abi": [], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c1ba5e944fe111da1797dd35f79743425b952ef5bdfbdee6a608952ac51099264736f6c63430007060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C SHL 0xA5 0xE9 DIFFICULTY INVALID GT SAR LOG1 PUSH26 0x7DD35F79743425B952EF5BDFBDEE6A608952AC51099264736F6C PUSH4 0x43000706 STOP CALLER ", + "sourceMap": "7417:1685:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c1ba5e944fe111da1797dd35f79743425b952ef5bdfbdee6a608952ac51099264736f6c63430007060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C SHL 0xA5 0xE9 DIFFICULTY INVALID GT SAR LOG1 PUSH26 0x7DD35F79743425B952EF5BDFBDEE6A608952AC51099264736F6C PUSH4 0x43000706 STOP CALLER ", + "sourceMap": "7417:1685:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + }, + "ICellarPoolShare": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "AddedLiquidity", + "type": "event" + }, + { + "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": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "RemovedLiquidity", + "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": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityEthForUniV3", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityForUniV3", + "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": "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": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityEthFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newFee", + "type": "uint16" + } + ], + "name": "setFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_validator", + "type": "address" + }, + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setValidator", + "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": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "addLiquidityEthForUniV3((uint256,uint256,uint256,uint256,address,uint256))": "70e032b1", + "addLiquidityForUniV3((uint256,uint256,uint256,uint256,address,uint256))": "33bc230a", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "owner()": "8da5cb5b", + "reinvest()": "fdb5a03e", + "removeLiquidityEthFromUniV3((uint256,uint256,uint256,address,uint256))": "a2d96f5f", + "removeLiquidityFromUniV3((uint256,uint256,uint256,address,uint256))": "276cd920", + "setFee(uint16)": "8e005553", + "setValidator(address,bool)": "4623c91d", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "transferOwnership(address)": "f2fde38b" + } + } + }, + "IERC20": { + "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": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + }, + "INonfungiblePositionManager": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amount0Max", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount1Max", + "type": "uint128" + } + ], + "internalType": "struct INonfungiblePositionManager.CollectParams", + "name": "params", + "type": "tuple" + } + ], + "name": "collect", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct INonfungiblePositionManager.DecreaseLiquidityParams", + "name": "params", + "type": "tuple" + } + ], + "name": "decreaseLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct INonfungiblePositionManager.IncreaseLiquidityParams", + "name": "params", + "type": "tuple" + } + ], + "name": "increaseLiquidity", + "outputs": [ + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct INonfungiblePositionManager.MintParams", + "name": "params", + "type": "tuple" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "positions", + "outputs": [ + { + "internalType": "uint96", + "name": "nonce", + "type": "uint96" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside0LastX128", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside1LastX128", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "tokensOwed0", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "tokensOwed1", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "burn(uint256)": "42966c68", + "collect((uint256,address,uint128,uint128))": "fc6f7865", + "decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))": "0c49ccbe", + "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))": "219f5d17", + "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))": "88316456", + "positions(uint256)": "99fbab88" + } + } + }, + "ISwapRouter": { + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinimum", + "type": "uint256" + }, + { + "internalType": "uint160", + "name": "sqrtPriceLimitX96", + "type": "uint160" + } + ], + "internalType": "struct ISwapRouter.ExactInputSingleParams", + "name": "params", + "type": "tuple" + } + ], + "name": "exactInputSingle", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))": "414bf389" + } + } + }, + "IUniswapV3Factory": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + } + ], + "name": "getPool", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getPool(address,address,uint24)": "1698ee82" + } + } + }, + "IUniswapV3Pool": { + "abi": [ + { + "inputs": [], + "name": "slot0", + "outputs": [ + { + "internalType": "uint160", + "name": "sqrtPriceX96", + "type": "uint160" + }, + { + "internalType": "int24", + "name": "tick", + "type": "int24" + }, + { + "internalType": "uint16", + "name": "observationIndex", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "observationCardinality", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "observationCardinalityNext", + "type": "uint16" + }, + { + "internalType": "uint8", + "name": "feeProtocol", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "unlocked", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "slot0()": "3850c7bd" + } + } + }, + "IWETH": { + "abi": [ + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "deposit()": "d0e30db0", + "withdraw(uint256)": "2e1a7d4d" + } + } + }, + "LiquidityAmounts": { + "abi": [], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122063599c6af50fe29b9767c88cd546de9a11f041eb80a89150b8c9f09a9a7a08b564736f6c63430007060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x599C6AF5 0xF 0xE2 SWAP12 SWAP8 PUSH8 0xC88CD546DE9A11F0 COINBASE 0xEB DUP1 0xA8 SWAP2 POP 0xB8 0xC9 CREATE SWAP11 SWAP11 PUSH27 0x8B564736F6C634300070600330000000000000000000000000000 ", + "sourceMap": "11809:2296:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122063599c6af50fe29b9767c88cd546de9a11f041eb80a89150b8c9f09a9a7a08b564736f6c63430007060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0x599C6AF5 0xF 0xE2 SWAP12 SWAP8 PUSH8 0xC88CD546DE9A11F0 COINBASE 0xEB DUP1 0xA8 SWAP2 POP 0xB8 0xC9 CREATE SWAP11 SWAP11 PUSH27 0x8B564736F6C634300070600330000000000000000000000000000 ", + "sourceMap": "11809:2296:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + }, + "SafeERC20": { + "abi": [], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220438dd78c74bed7ec3add6080b45338d07924da32e4597e65b195782d8291035364736f6c63430007060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER DUP14 0xD7 DUP13 PUSH21 0xBED7EC3ADD6080B45338D07924DA32E4597E65B195 PUSH25 0x2D8291035364736F6C63430007060033000000000000000000 ", + "sourceMap": "5917:1407:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220438dd78c74bed7ec3add6080b45338d07924da32e4597e65b195782d8291035364736f6c63430007060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NUMBER DUP14 0xD7 DUP13 PUSH21 0xBED7EC3ADD6080B45338D07924DA32E4597E65B195 PUSH25 0x2D8291035364736F6C63430007060033000000000000000000 ", + "sourceMap": "5917:1407:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + }, + "TickMath": { + "abi": [], + "evm": { + "bytecode": { + "generatedSources": [], + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207cad927c8487d146a0707beeb42794aeee90c36d2af93e3aafd88781b072082e64736f6c63430007060033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0xAD927C8487D146A0707BEEB42794AEEE90C36D2AF93E3AAFD88781B072 ADDMOD 0x2E PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", + "sourceMap": "9104:2703:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207cad927c8487d146a0707beeb42794aeee90c36d2af93e3aafd88781b072082e64736f6c63430007060033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0xAD927C8487D146A0707BEEB42794AEEE90C36D2AF93E3AAFD88781B072 ADDMOD 0x2E PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", + "sourceMap": "9104:2703:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + } + }, + "sources": { + "contracts/CellarPoolShare.sol": { + "ast": { + "absolutePath": "contracts/CellarPoolShare.sol", + "exportedSymbols": { + "Address": [ + 407 + ], + "BlockLock": [ + 1435 + ], + "CellarPoolShare": [ + 4770 + ], + "FixedPoint96": [ + 540 + ], + "FullMath": [ + 666 + ], + "ICellarPoolShare": [ + 1387 + ], + "IERC20": [ + 69 + ], + "INonfungiblePositionManager": [ + 202 + ], + "ISwapRouter": [ + 227 + ], + "IUniswapV3Factory": [ + 239 + ], + "IUniswapV3Pool": [ + 257 + ], + "IWETH": [ + 1396 + ], + "LiquidityAmounts": [ + 1230 + ], + "SafeERC20": [ + 536 + ], + "TickMath": [ + 1048 + ] + }, + "id": 4771, + "license": "Apache-2.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.7", + ".6" + ], + "nodeType": "PragmaDirective", + "src": "133:23:0" + }, + { + "id": 2, + "literals": [ + "abicoder", + "v2" + ], + "nodeType": "PragmaDirective", + "src": "157:19:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 69, + "linearizedBaseContracts": [ + 69 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 10, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "216:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "216:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "238:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "238:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 10, + "src": "258:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "258:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "215:57:0" + }, + "src": "201:72:0" + }, + { + "anonymous": false, + "id": 18, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "302:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "302:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "333:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "333:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "366:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "366:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "292:93:0" + }, + "src": "278:108:0" + }, + { + "functionSelector": "095ea7b3", + "id": 27, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "409:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "409:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "426:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 21, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "426:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "408:33:0" + }, + "returnParameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 27, + "src": "460:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 24, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "460:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "459:6:0" + }, + "scope": 69, + "src": "392:74:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a9059cbb", + "id": 36, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "490:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 28, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "490:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 31, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "509:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 30, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "509:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "489:35:0" + }, + "returnParameters": { + "id": 35, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 36, + "src": "551:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 33, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "551:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "550:6:0" + }, + "scope": 69, + "src": "472:85:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "23b872dd", + "id": 47, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 38, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "594:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "594:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 40, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "618:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 39, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "618:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 42, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "645:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 41, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "645:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "584:81:0" + }, + "returnParameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 45, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 47, + "src": "684:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 44, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "684:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "683:6:0" + }, + "scope": 69, + "src": "563:127:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "dd62ed3e", + "id": 56, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 52, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "715:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "715:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 51, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "730:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "730:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "714:32:0" + }, + "returnParameters": { + "id": 55, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 54, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 56, + "src": "782:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 53, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "782:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "781:9:0" + }, + "scope": 69, + "src": "696:95:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "70a08231", + "id": 63, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 59, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 63, + "src": "816:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 57, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "816:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "815:17:0" + }, + "returnParameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 63, + "src": "856:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 60, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "856:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "855:9:0" + }, + "scope": 69, + "src": "797:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "18160ddd", + "id": 68, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [], + "src": "891:2:0" + }, + "returnParameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 68, + "src": "917:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "917:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "916:9:0" + }, + "scope": 69, + "src": "871:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "178:750:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 202, + "linearizedBaseContracts": [ + 202 + ], + "name": "INonfungiblePositionManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "INonfungiblePositionManager.MintParams", + "id": 92, + "members": [ + { + "constant": false, + "id": 71, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1002:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1002:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 73, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1026:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1026:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 75, + "mutability": "mutable", + "name": "fee", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1050:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 74, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1050:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 77, + "mutability": "mutable", + "name": "tickLower", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1070:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 76, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "1070:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 79, + "mutability": "mutable", + "name": "tickUpper", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1095:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 78, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "1095:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 81, + "mutability": "mutable", + "name": "amount0Desired", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1120:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 80, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1120:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 83, + "mutability": "mutable", + "name": "amount1Desired", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1152:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 82, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1152:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 85, + "mutability": "mutable", + "name": "amount0Min", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1184:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 84, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1184:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 87, + "mutability": "mutable", + "name": "amount1Min", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1212:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 86, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1212:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 89, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1240:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 88, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1240:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 91, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "1267:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 90, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1267:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MintParams", + "nodeType": "StructDefinition", + "scope": 202, + "src": "974:316:0", + "visibility": "public" + }, + { + "canonicalName": "INonfungiblePositionManager.IncreaseLiquidityParams", + "id": 105, + "members": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "1337:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 93, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1337:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "amount0Desired", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "1362:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 95, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1362:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 98, + "mutability": "mutable", + "name": "amount1Desired", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "1394:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 97, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1394:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 100, + "mutability": "mutable", + "name": "amount0Min", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "1426:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 99, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1426:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "amount1Min", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "1454:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1454:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "1482:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1482:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "IncreaseLiquidityParams", + "nodeType": "StructDefinition", + "scope": 202, + "src": "1296:209:0", + "visibility": "public" + }, + { + "canonicalName": "INonfungiblePositionManager.DecreaseLiquidityParams", + "id": 116, + "members": [ + { + "constant": false, + "id": 107, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "1552:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1552:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "1577:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 108, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1577:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 111, + "mutability": "mutable", + "name": "amount0Min", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "1604:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1604:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "mutability": "mutable", + "name": "amount1Min", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "1632:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1632:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "1660:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1660:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "DecreaseLiquidityParams", + "nodeType": "StructDefinition", + "scope": 202, + "src": "1511:172:0", + "visibility": "public" + }, + { + "canonicalName": "INonfungiblePositionManager.CollectParams", + "id": 125, + "members": [ + { + "constant": false, + "id": 118, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 125, + "src": "1720:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1720:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 125, + "src": "1745:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 119, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1745:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 122, + "mutability": "mutable", + "name": "amount0Max", + "nodeType": "VariableDeclaration", + "scope": 125, + "src": "1772:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 121, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1772:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 124, + "mutability": "mutable", + "name": "amount1Max", + "nodeType": "VariableDeclaration", + "scope": 125, + "src": "1800:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 123, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1800:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "name": "CollectParams", + "nodeType": "StructDefinition", + "scope": 202, + "src": "1689:136:0", + "visibility": "public" + }, + { + "functionSelector": "88316456", + "id": 138, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "params", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "1845:26:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_calldata_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams" + }, + "typeName": { + "id": 126, + "name": "MintParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 92, + "src": "1845:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_storage_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams" + } + }, + "visibility": "internal" + } + ], + "src": "1844:28:0" + }, + "returnParameters": { + "id": 137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 130, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "1920:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1920:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "1945:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 131, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1945:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "1972:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 133, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1972:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 136, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "1997:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1997:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1910:108:0" + }, + "scope": 202, + "src": "1831:188:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "219f5d17", + "id": 149, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "increaseLiquidity", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 140, + "mutability": "mutable", + "name": "params", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2052:39:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_calldata_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams" + }, + "typeName": { + "id": 139, + "name": "IncreaseLiquidityParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 105, + "src": "2052:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_storage_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams" + } + }, + "visibility": "internal" + } + ], + "src": "2051:41:0" + }, + "returnParameters": { + "id": 148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 143, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2140:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 142, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2140:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 145, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2167:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 144, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 147, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "2192:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 146, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2192:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2130:83:0" + }, + "scope": 202, + "src": "2025:189:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0c49ccbe", + "id": 158, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decreaseLiquidity", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "mutability": "mutable", + "name": "params", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "2247:39:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$116_calldata_ptr", + "typeString": "struct INonfungiblePositionManager.DecreaseLiquidityParams" + }, + "typeName": { + "id": 150, + "name": "DecreaseLiquidityParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 116, + "src": "2247:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$116_storage_ptr", + "typeString": "struct INonfungiblePositionManager.DecreaseLiquidityParams" + } + }, + "visibility": "internal" + } + ], + "src": "2246:41:0" + }, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 154, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "2326:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2326:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "2343:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 155, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2343:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2325:34:0" + }, + "scope": 202, + "src": "2220:140:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fc6f7865", + "id": 167, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "collect", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 161, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 160, + "mutability": "mutable", + "name": "params", + "nodeType": "VariableDeclaration", + "scope": 167, + "src": "2383:29:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CollectParams_$125_calldata_ptr", + "typeString": "struct INonfungiblePositionManager.CollectParams" + }, + "typeName": { + "id": 159, + "name": "CollectParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 125, + "src": "2383:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CollectParams_$125_storage_ptr", + "typeString": "struct INonfungiblePositionManager.CollectParams" + } + }, + "visibility": "internal" + } + ], + "src": "2382:31:0" + }, + "returnParameters": { + "id": 166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 167, + "src": "2452:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 162, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2452:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 167, + "src": "2469:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2469:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2451:34:0" + }, + "scope": 202, + "src": "2366:120:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "42966c68", + "id": 172, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 170, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 169, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 172, + "src": "2506:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 168, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2506:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2505:17:0" + }, + "returnParameters": { + "id": 171, + "nodeType": "ParameterList", + "parameters": [], + "src": "2539:0:0" + }, + "scope": 202, + "src": "2492:48:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "99fbab88", + "id": 201, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "positions", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2565:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2565:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2564:17:0" + }, + "returnParameters": { + "id": 200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 177, + "mutability": "mutable", + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2626:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 176, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "2626:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 179, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2648:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2648:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 181, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2674:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2674:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 183, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2698:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2698:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 185, + "mutability": "mutable", + "name": "fee", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2722:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 184, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "2722:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "tickLower", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2742:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 186, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "2742:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 189, + "mutability": "mutable", + "name": "tickUpper", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2767:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 188, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "2767:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 191, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2792:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 190, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2792:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "feeGrowthInside0LastX128", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2819:32:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2819:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "feeGrowthInside1LastX128", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2861:32:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 194, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2861:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 197, + "mutability": "mutable", + "name": "tokensOwed0", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2903:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 196, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2903:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 199, + "mutability": "mutable", + "name": "tokensOwed1", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "2932:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 198, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2932:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "2616:341:0" + }, + "scope": 202, + "src": "2546:412:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "930:2030:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 227, + "linearizedBaseContracts": [ + 227 + ], + "name": "ISwapRouter", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ISwapRouter.ExactInputSingleParams", + "id": 219, + "members": [ + { + "constant": false, + "id": 204, + "mutability": "mutable", + "name": "tokenIn", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3030:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3030:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "mutability": "mutable", + "name": "tokenOut", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3055:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3055:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 208, + "mutability": "mutable", + "name": "fee", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3081:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 207, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3081:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 210, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3101:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3101:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 212, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3128:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 211, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3128:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 214, + "mutability": "mutable", + "name": "amountIn", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3154:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3154:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 216, + "mutability": "mutable", + "name": "amountOutMinimum", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3180:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 215, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3180:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 218, + "mutability": "mutable", + "name": "sqrtPriceLimitX96", + "nodeType": "VariableDeclaration", + "scope": 219, + "src": "3214:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 217, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "3214:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + } + ], + "name": "ExactInputSingleParams", + "nodeType": "StructDefinition", + "scope": 227, + "src": "2990:256:0", + "visibility": "public" + }, + { + "functionSelector": "414bf389", + "id": 226, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "exactInputSingle", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 221, + "mutability": "mutable", + "name": "params", + "nodeType": "VariableDeclaration", + "scope": 226, + "src": "3278:38:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_calldata_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams" + }, + "typeName": { + "id": 220, + "name": "ExactInputSingleParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 219, + "src": "3278:22:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_storage_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams" + } + }, + "visibility": "internal" + } + ], + "src": "3277:40:0" + }, + "returnParameters": { + "id": 225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 224, + "mutability": "mutable", + "name": "amountOut", + "nodeType": "VariableDeclaration", + "scope": 226, + "src": "3356:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3356:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3355:19:0" + }, + "scope": 227, + "src": "3252:123:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "2962:415:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 239, + "linearizedBaseContracts": [ + 239 + ], + "name": "IUniswapV3Factory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "1698ee82", + "id": 238, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getPool", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 229, + "mutability": "mutable", + "name": "tokenA", + "nodeType": "VariableDeclaration", + "scope": 238, + "src": "3439:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 228, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3439:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 231, + "mutability": "mutable", + "name": "tokenB", + "nodeType": "VariableDeclaration", + "scope": 238, + "src": "3463:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 230, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3463:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 233, + "mutability": "mutable", + "name": "fee", + "nodeType": "VariableDeclaration", + "scope": 238, + "src": "3487:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 232, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "3487:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "3429:74:0" + }, + "returnParameters": { + "id": 237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 236, + "mutability": "mutable", + "name": "pool", + "nodeType": "VariableDeclaration", + "scope": 238, + "src": "3527:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 235, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3527:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3526:14:0" + }, + "scope": 239, + "src": "3413:128:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "3379:164:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 257, + "linearizedBaseContracts": [ + 257 + ], + "name": "IUniswapV3Pool", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "3850c7bd", + "id": 256, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "slot0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 240, + "nodeType": "ParameterList", + "parameters": [], + "src": "3590:2:0" + }, + "returnParameters": { + "id": 255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "sqrtPriceX96", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3637:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 241, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "3637:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 244, + "mutability": "mutable", + "name": "tick", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3667:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 243, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "3667:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 246, + "mutability": "mutable", + "name": "observationIndex", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3687:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 245, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3687:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 248, + "mutability": "mutable", + "name": "observationCardinality", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3720:29:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 247, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3720:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 250, + "mutability": "mutable", + "name": "observationCardinalityNext", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3759:33:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 249, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3759:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 252, + "mutability": "mutable", + "name": "feeProtocol", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3802:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 251, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3802:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "mutability": "mutable", + "name": "unlocked", + "nodeType": "VariableDeclaration", + "scope": 256, + "src": "3829:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 253, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3829:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3627:221:0" + }, + "scope": 257, + "src": "3576:273:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "3545:306:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 407, + "linearizedBaseContracts": [ + 407 + ], + "name": "Address", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 272, + "nodeType": "Block", + "src": "3976:90:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 267, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4006:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 268, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "4014:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "5232", + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4020:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eaab0e6706442d24ab0603437341239686fb9edee31cf4de6e5d38880d320a75", + "typeString": "literal_string \"R2\"" + }, + "value": "R2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_eaab0e6706442d24ab0603437341239686fb9edee31cf4de6e5d38880d320a75", + "typeString": "literal_string \"R2\"" + } + ], + "id": 266, + "name": "functionCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 273, + 292 + ], + "referencedDeclaration": 292, + "src": "3993:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3993:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 265, + "id": 271, + "nodeType": "Return", + "src": "3986:39:0" + } + ] + }, + "id": 273, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 262, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 259, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "3897:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3897:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 261, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "3913:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 260, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3913:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3896:35:0" + }, + "returnParameters": { + "id": 265, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 264, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 273, + "src": "3958:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 263, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3958:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3957:14:0" + }, + "scope": 407, + "src": "3875:191:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 291, + "nodeType": "Block", + "src": "4219:76:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 285, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 275, + "src": "4258:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 286, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 277, + "src": "4266:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4272:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 288, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 279, + "src": "4275:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 284, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 311, + 360 + ], + "referencedDeclaration": 360, + "src": "4236:21:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4236:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 283, + "id": 290, + "nodeType": "Return", + "src": "4229:59:0" + } + ] + }, + "id": 292, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 275, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "4103:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4103:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 277, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "4127:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 276, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4127:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 279, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "4154:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 278, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4154:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4093:93:0" + }, + "returnParameters": { + "id": 283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 282, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 292, + "src": "4205:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 281, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4205:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4204:14:0" + }, + "scope": 407, + "src": "4072:223:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 310, + "nodeType": "Block", + "src": "4444:183:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 304, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 294, + "src": "4504:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 305, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 296, + "src": "4524:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 306, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 298, + "src": "4542:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "5233", + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ac0c36c66e26aea592918673b06af05387648d367d9d32bd16633b15f314ff35", + "typeString": "literal_string \"R3\"" + }, + "value": "R3" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_ac0c36c66e26aea592918673b06af05387648d367d9d32bd16633b15f314ff35", + "typeString": "literal_string \"R3\"" + } + ], + "id": 303, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 311, + 360 + ], + "referencedDeclaration": 360, + "src": "4469:21:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4469:151:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 302, + "id": 309, + "nodeType": "Return", + "src": "4454:166:0" + } + ] + }, + "id": 311, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 294, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "4341:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4341:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 296, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "4365:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 295, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4365:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 298, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "4392:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4392:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4331:80:0" + }, + "returnParameters": { + "id": 302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 301, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 311, + "src": "4430:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 300, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4430:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4429:14:0" + }, + "scope": 407, + "src": "4301:326:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "4812:366:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 327, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4851:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$407", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$407", + "typeString": "library Address" + } + ], + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4843:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4843:7:0", + "typeDescriptions": {} + } + }, + "id": 328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4843:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "4843:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 330, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "4868:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4843:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5234", + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4887:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5951d11449359f7360e765813bfc1ec8aa3e8e282025691db1b8ec131de30573", + "typeString": "literal_string \"R4\"" + }, + "value": "R4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5951d11449359f7360e765813bfc1ec8aa3e8e282025691db1b8ec131de30573", + "typeString": "literal_string \"R4\"" + } + ], + "id": 324, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4822:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4822:112:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 334, + "nodeType": "ExpressionStatement", + "src": "4822:112:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 337, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "4963:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 336, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 376, + "src": "4952:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4952:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5235", + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4972:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_789f288596bd3269827a783ec32644552a0525213907e15c35a4e2c9063dd7a6", + "typeString": "literal_string \"R5\"" + }, + "value": "R5" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_789f288596bd3269827a783ec32644552a0525213907e15c35a4e2c9063dd7a6", + "typeString": "literal_string \"R5\"" + } + ], + "id": 335, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4944:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4944:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 341, + "nodeType": "ExpressionStatement", + "src": "4944:33:0" + }, + { + "assignments": [ + 343, + 345 + ], + "declarations": [ + { + "constant": false, + "id": 343, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 359, + "src": "5022:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 342, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5022:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 345, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "scope": 359, + "src": "5036:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 344, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5036:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 352, + "initialValue": { + "arguments": [ + { + "id": 350, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5097:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 346, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5071:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "src": "5071:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 348, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "5090:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "5071:25:0", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5071:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5021:81:0" + }, + { + "expression": { + "arguments": [ + { + "id": 354, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "5137:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 355, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "5146:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 356, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "5158:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 353, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "5119:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" + } + }, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5119:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 323, + "id": 358, + "nodeType": "Return", + "src": "5112:59:0" + } + ] + }, + "id": 360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 313, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "4673:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4673:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "4697:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 314, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4697:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "4724:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4724:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "4747:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 318, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4747:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4663:116:0" + }, + "returnParameters": { + "id": 323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "4798:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 321, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4798:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4797:14:0" + }, + "scope": 407, + "src": "4633:545:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 375, + "nodeType": "Block", + "src": "5250:124:0", + "statements": [ + { + "assignments": [ + 368 + ], + "declarations": [ + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "size", + "nodeType": "VariableDeclaration", + "scope": 375, + "src": "5260:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5260:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 369, + "nodeType": "VariableDeclarationStatement", + "src": "5260:12:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "5291:52:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "5305:28:0", + "value": { + "arguments": [ + { + "name": "account", + "nodeType": "YulIdentifier", + "src": "5325:7:0" + } + ], + "functionName": { + "name": "extcodesize", + "nodeType": "YulIdentifier", + "src": "5313:11:0" + }, + "nodeType": "YulFunctionCall", + "src": "5313:20:0" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "5305:4:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 362, + "isOffset": false, + "isSlot": false, + "src": "5325:7:0", + "valueSize": 1 + }, + { + "declaration": 368, + "isOffset": false, + "isSlot": false, + "src": "5305:4:0", + "valueSize": 1 + } + ], + "id": 370, + "nodeType": "InlineAssembly", + "src": "5282:61:0" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 371, + "name": "size", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "5359:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5366:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5359:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 366, + "id": 374, + "nodeType": "Return", + "src": "5352:15:0" + } + ] + }, + "id": 376, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 362, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 376, + "src": "5204:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 361, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5204:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5203:17:0" + }, + "returnParameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 365, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 376, + "src": "5244:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 364, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5244:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5243:6:0" + }, + "scope": 407, + "src": "5184:190:0", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 405, + "nodeType": "Block", + "src": "5540:373:0", + "statements": [ + { + "condition": { + "id": 387, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 378, + "src": "5554:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 403, + "nodeType": "Block", + "src": "5611:296:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 391, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "5629:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5629:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5649:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5629:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 401, + "nodeType": "Block", + "src": "5844:53:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 398, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 382, + "src": "5869:12:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 397, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "5862:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5862:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 400, + "nodeType": "ExpressionStatement", + "src": "5862:20:0" + } + ] + }, + "id": 402, + "nodeType": "IfStatement", + "src": "5625:272:0", + "trueBody": { + "id": 396, + "nodeType": "Block", + "src": "5652:186:0", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "5679:145:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "5701:40:0", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "5730:10:0" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "5724:5:0" + }, + "nodeType": "YulFunctionCall", + "src": "5724:17:0" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "5705:15:0", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "5773:2:0", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "5777:10:0" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "5769:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "5769:19:0" + }, + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "5790:15:0" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "5762:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "5762:44:0" + }, + "nodeType": "YulExpressionStatement", + "src": "5762:44:0" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 380, + "isOffset": false, + "isSlot": false, + "src": "5730:10:0", + "valueSize": 1 + }, + { + "declaration": 380, + "isOffset": false, + "isSlot": false, + "src": "5777:10:0", + "valueSize": 1 + } + ], + "id": 395, + "nodeType": "InlineAssembly", + "src": "5670:154:0" + } + ] + } + } + ] + }, + "id": 404, + "nodeType": "IfStatement", + "src": "5550:357:0", + "trueBody": { + "id": 390, + "nodeType": "Block", + "src": "5563:42:0", + "statements": [ + { + "expression": { + "id": 388, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "5584:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 386, + "id": 389, + "nodeType": "Return", + "src": "5577:17:0" + } + ] + } + } + ] + }, + "id": 406, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_verifyCallResult", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 383, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 378, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 406, + "src": "5416:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 377, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5416:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 380, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "scope": 406, + "src": "5438:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 379, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5438:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 382, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "scope": 406, + "src": "5471:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 381, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5471:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5406:97:0" + }, + "returnParameters": { + "id": 386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 406, + "src": "5526:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 384, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5526:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5525:14:0" + }, + "scope": 407, + "src": "5380:533:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 4771, + "src": "3853:2062:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 536, + "linearizedBaseContracts": [ + 536 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 410, + "libraryName": { + "id": 408, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 407, + "src": "5947:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$407", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "5941:26:0", + "typeName": { + "id": 409, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5959:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "body": { + "id": 431, + "nodeType": "Block", + "src": "6075:137:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 420, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6118:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 423, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "6160:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 36, + "src": "6160:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6160:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 426, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "6185:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 427, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "6189:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 421, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6137:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "6137:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6137:58:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 419, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "6085:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6085:120:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 430, + "nodeType": "ExpressionStatement", + "src": "6085:120:0" + } + ] + }, + "id": 432, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 412, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 432, + "src": "6004:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 411, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 69, + "src": "6004:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 414, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 432, + "src": "6026:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6026:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 432, + "src": "6046:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6046:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5994:71:0" + }, + "returnParameters": { + "id": 418, + "nodeType": "ParameterList", + "parameters": [], + "src": "6075:0:0" + }, + "scope": 536, + "src": "5973:239:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 456, + "nodeType": "Block", + "src": "6346:147:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 444, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 434, + "src": "6389:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 447, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 434, + "src": "6431:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 47, + "src": "6431:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6431:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 450, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 436, + "src": "6460:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 451, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "6466:2:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 452, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 440, + "src": "6470:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 445, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6408:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "6408:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6408:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 443, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "6356:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6356:130:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 455, + "nodeType": "ExpressionStatement", + "src": "6356:130:0" + } + ] + }, + "id": 457, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 434, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 457, + "src": "6253:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 433, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 69, + "src": "6253:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 436, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 457, + "src": "6275:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 435, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6275:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 438, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 457, + "src": "6297:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 437, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6297:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 440, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 457, + "src": "6317:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6243:93:0" + }, + "returnParameters": { + "id": 442, + "nodeType": "ParameterList", + "parameters": [], + "src": "6346:0:0" + }, + "scope": 536, + "src": "6218:275:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 498, + "nodeType": "Block", + "src": "6605:294:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 467, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "6637:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6646:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6637:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 470, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6636:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 475, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6677:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$536", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$536", + "typeString": "library SafeERC20" + } + ], + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6669:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6669:7:0", + "typeDescriptions": {} + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6669:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 477, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 461, + "src": "6684:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 471, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "6653:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 56, + "src": "6653:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6653:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6696:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6653:44:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 481, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6652:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6636:62:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5236", + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6712:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e6d47854c9a24d22ca7022dcfd2fd5f2bb6e30b687e6bebd6cd16e9f534a124b", + "typeString": "literal_string \"R6\"" + }, + "value": "R6" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e6d47854c9a24d22ca7022dcfd2fd5f2bb6e30b687e6bebd6cd16e9f534a124b", + "typeString": "literal_string \"R6\"" + } + ], + "id": 466, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6615:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6615:143:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 485, + "nodeType": "ExpressionStatement", + "src": "6615:143:0" + }, + { + "expression": { + "arguments": [ + { + "id": 487, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "6801:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "expression": { + "id": 490, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 459, + "src": "6843:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 27, + "src": "6843:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "6843:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "id": 493, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 461, + "src": "6867:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 494, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "6876:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 488, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6820:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "src": "6820:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6820:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 486, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "6768:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6768:124:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 497, + "nodeType": "ExpressionStatement", + "src": "6768:124:0" + } + ] + }, + "id": 499, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeApprove", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 459, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 499, + "src": "6529:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 458, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 69, + "src": "6529:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 461, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 499, + "src": "6551:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6551:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 499, + "src": "6576:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6576:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6519:76:0" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [], + "src": "6605:0:0" + }, + "scope": 536, + "src": "6499:400:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 534, + "nodeType": "Block", + "src": "6975:347:0", + "statements": [ + { + "assignments": [ + 507 + ], + "declarations": [ + { + "constant": false, + "id": 507, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "scope": 534, + "src": "6985:23:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 506, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6985:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 516, + "initialValue": { + "arguments": [ + { + "id": 513, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "7060:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "5237", + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7078:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4373cd1001f5c70ff2630ee7afc9b87d2ecf5ee4b22ac12b00ca0614a7c8ed11", + "typeString": "literal_string \"R7\"" + }, + "value": "R7" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_4373cd1001f5c70ff2630ee7afc9b87d2ecf5ee4b22ac12b00ca0614a7c8ed11", + "typeString": "literal_string \"R7\"" + } + ], + "expression": { + "arguments": [ + { + "id": 510, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "7027:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + ], + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7019:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7019:7:0", + "typeDescriptions": {} + } + }, + "id": 511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7019:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 292, + "src": "7019:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7019:109:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6985:143:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 517, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "7142:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7142:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7162:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7142:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 533, + "nodeType": "IfStatement", + "src": "7138:178:0", + "trueBody": { + "id": 532, + "nodeType": "Block", + "src": "7165:151:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 524, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 507, + "src": "7215:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7228:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 525, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7228:4:0", + "typeDescriptions": {} + } + } + ], + "id": 527, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7227:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "id": 522, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7204:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "7204:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7204:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5238", + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7252:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c55547b6f0665cc51e40102080acdf673c9dc04066820f1bbe0a1abe967e3c82", + "typeString": "literal_string \"R8\"" + }, + "value": "R8" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c55547b6f0665cc51e40102080acdf673c9dc04066820f1bbe0a1abe967e3c82", + "typeString": "literal_string \"R8\"" + } + ], + "id": 521, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7179:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7179:126:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 531, + "nodeType": "ExpressionStatement", + "src": "7179:126:0" + } + ] + } + } + ] + }, + "id": 535, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 501, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "6934:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 500, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 69, + "src": "6934:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 503, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 535, + "src": "6948:17:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 502, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6948:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6933:33:0" + }, + "returnParameters": { + "id": 505, + "nodeType": "ParameterList", + "parameters": [], + "src": "6975:0:0" + }, + "scope": 536, + "src": "6905:417:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 4771, + "src": "5917:1407:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 540, + "linearizedBaseContracts": [ + 540 + ], + "name": "FixedPoint96", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 539, + "mutability": "constant", + "name": "Q96", + "nodeType": "VariableDeclaration", + "scope": 540, + "src": "7353:59:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 537, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7353:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "307831303030303030303030303030303030303030303030303030", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7385:27:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_79228162514264337593543950336_by_1", + "typeString": "int_const 79228162514264337593543950336" + }, + "value": "0x1000000000000000000000000" + }, + "visibility": "internal" + } + ], + "scope": 4771, + "src": "7326:89:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 666, + "linearizedBaseContracts": [ + 666 + ], + "name": "FullMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 664, + "nodeType": "Block", + "src": "7568:1532:0", + "statements": [ + { + "assignments": [ + 552 + ], + "declarations": [ + { + "constant": false, + "id": 552, + "mutability": "mutable", + "name": "prod0", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "7578:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7578:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 553, + "nodeType": "VariableDeclarationStatement", + "src": "7578:13:0" + }, + { + "assignments": [ + 555 + ], + "declarations": [ + { + "constant": false, + "id": 555, + "mutability": "mutable", + "name": "prod1", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "7646:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7646:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 556, + "nodeType": "VariableDeclarationStatement", + "src": "7646:13:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "7722:141:0", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7736:30:0", + "value": { + "arguments": [ + { + "name": "a", + "nodeType": "YulIdentifier", + "src": "7753:1:0" + }, + { + "name": "b", + "nodeType": "YulIdentifier", + "src": "7756:1:0" + }, + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7763:1:0", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nodeType": "YulIdentifier", + "src": "7759:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7759:6:0" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier", + "src": "7746:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "7746:20:0" + }, + "variables": [ + { + "name": "mm", + "nodeType": "YulTypedName", + "src": "7740:2:0", + "type": "" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7779:18:0", + "value": { + "arguments": [ + { + "name": "a", + "nodeType": "YulIdentifier", + "src": "7792:1:0" + }, + { + "name": "b", + "nodeType": "YulIdentifier", + "src": "7795:1:0" + } + ], + "functionName": { + "name": "mul", + "nodeType": "YulIdentifier", + "src": "7788:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7788:9:0" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "7779:5:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "7810:43:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "mm", + "nodeType": "YulIdentifier", + "src": "7827:2:0" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "7831:5:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7823:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7823:14:0" + }, + { + "arguments": [ + { + "name": "mm", + "nodeType": "YulIdentifier", + "src": "7842:2:0" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "7846:5:0" + } + ], + "functionName": { + "name": "lt", + "nodeType": "YulIdentifier", + "src": "7839:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "7839:13:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "7819:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7819:34:0" + }, + "variableNames": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "7810:5:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 542, + "isOffset": false, + "isSlot": false, + "src": "7753:1:0", + "valueSize": 1 + }, + { + "declaration": 542, + "isOffset": false, + "isSlot": false, + "src": "7792:1:0", + "valueSize": 1 + }, + { + "declaration": 544, + "isOffset": false, + "isSlot": false, + "src": "7756:1:0", + "valueSize": 1 + }, + { + "declaration": 544, + "isOffset": false, + "isSlot": false, + "src": "7795:1:0", + "valueSize": 1 + }, + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "7779:5:0", + "valueSize": 1 + }, + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "7831:5:0", + "valueSize": 1 + }, + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "7846:5:0", + "valueSize": 1 + }, + { + "declaration": 555, + "isOffset": false, + "isSlot": false, + "src": "7810:5:0", + "valueSize": 1 + } + ], + "id": 557, + "nodeType": "InlineAssembly", + "src": "7713:150:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 558, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "7877:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7886:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7877:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 571, + "nodeType": "IfStatement", + "src": "7873:179:0", + "trueBody": { + "id": 570, + "nodeType": "Block", + "src": "7889:163:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 562, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "7911:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7925:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7911:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 561, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7903:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7903:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 566, + "nodeType": "ExpressionStatement", + "src": "7903:24:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "7950:65:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7968:33:0", + "value": { + "arguments": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "7982:5:0" + }, + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "7989:11:0" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "7978:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "7978:23:0" + }, + "variableNames": [ + { + "name": "result", + "nodeType": "YulIdentifier", + "src": "7968:6:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 546, + "isOffset": false, + "isSlot": false, + "src": "7989:11:0", + "valueSize": 1 + }, + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "7982:5:0", + "valueSize": 1 + }, + { + "declaration": 549, + "isOffset": false, + "isSlot": false, + "src": "7968:6:0", + "valueSize": 1 + } + ], + "id": 567, + "nodeType": "InlineAssembly", + "src": "7941:74:0" + }, + { + "expression": { + "id": 568, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "8035:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 550, + "id": 569, + "nodeType": "Return", + "src": "8028:13:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 573, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8070:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 574, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "8084:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8070:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 572, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8062:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8062:28:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 577, + "nodeType": "ExpressionStatement", + "src": "8062:28:0" + }, + { + "assignments": [ + 579 + ], + "declarations": [ + { + "constant": false, + "id": 579, + "mutability": "mutable", + "name": "remainder", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "8101:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8101:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 580, + "nodeType": "VariableDeclarationStatement", + "src": "8101:17:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8137:62:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8151:38:0", + "value": { + "arguments": [ + { + "name": "a", + "nodeType": "YulIdentifier", + "src": "8171:1:0" + }, + { + "name": "b", + "nodeType": "YulIdentifier", + "src": "8174:1:0" + }, + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "8177:11:0" + } + ], + "functionName": { + "name": "mulmod", + "nodeType": "YulIdentifier", + "src": "8164:6:0" + }, + "nodeType": "YulFunctionCall", + "src": "8164:25:0" + }, + "variableNames": [ + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "8151:9:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 542, + "isOffset": false, + "isSlot": false, + "src": "8171:1:0", + "valueSize": 1 + }, + { + "declaration": 544, + "isOffset": false, + "isSlot": false, + "src": "8174:1:0", + "valueSize": 1 + }, + { + "declaration": 546, + "isOffset": false, + "isSlot": false, + "src": "8177:11:0", + "valueSize": 1 + }, + { + "declaration": 579, + "isOffset": false, + "isSlot": false, + "src": "8151:9:0", + "valueSize": 1 + } + ], + "id": 581, + "nodeType": "InlineAssembly", + "src": "8128:71:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8217:108:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8231:41:0", + "value": { + "arguments": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "8244:5:0" + }, + { + "arguments": [ + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "8254:9:0" + }, + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8265:5:0" + } + ], + "functionName": { + "name": "gt", + "nodeType": "YulIdentifier", + "src": "8251:2:0" + }, + "nodeType": "YulFunctionCall", + "src": "8251:20:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8240:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8240:32:0" + }, + "variableNames": [ + { + "name": "prod1", + "nodeType": "YulIdentifier", + "src": "8231:5:0" + } + ] + }, + { + "nodeType": "YulAssignment", + "src": "8285:30:0", + "value": { + "arguments": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8298:5:0" + }, + { + "name": "remainder", + "nodeType": "YulIdentifier", + "src": "8305:9:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8294:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8294:21:0" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8285:5:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "8265:5:0", + "valueSize": 1 + }, + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "8285:5:0", + "valueSize": 1 + }, + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "8298:5:0", + "valueSize": 1 + }, + { + "declaration": 555, + "isOffset": false, + "isSlot": false, + "src": "8231:5:0", + "valueSize": 1 + }, + { + "declaration": 555, + "isOffset": false, + "isSlot": false, + "src": "8244:5:0", + "valueSize": 1 + }, + { + "declaration": 579, + "isOffset": false, + "isSlot": false, + "src": "8254:9:0", + "valueSize": 1 + }, + { + "declaration": 579, + "isOffset": false, + "isSlot": false, + "src": "8305:9:0", + "valueSize": 1 + } + ], + "id": 582, + "nodeType": "InlineAssembly", + "src": "8208:117:0" + }, + { + "assignments": [ + 584 + ], + "declarations": [ + { + "constant": false, + "id": 584, + "mutability": "mutable", + "name": "twos", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "8335:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8335:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 589, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "8350:12:0", + "subExpression": { + "id": 585, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8351:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 587, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8365:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8350:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8335:41:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8396:61:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8410:37:0", + "value": { + "arguments": [ + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "8429:11:0" + }, + { + "name": "twos", + "nodeType": "YulIdentifier", + "src": "8442:4:0" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8425:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8425:22:0" + }, + "variableNames": [ + { + "name": "denominator", + "nodeType": "YulIdentifier", + "src": "8410:11:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 546, + "isOffset": false, + "isSlot": false, + "src": "8410:11:0", + "valueSize": 1 + }, + { + "declaration": 546, + "isOffset": false, + "isSlot": false, + "src": "8429:11:0", + "valueSize": 1 + }, + { + "declaration": 584, + "isOffset": false, + "isSlot": false, + "src": "8442:4:0", + "valueSize": 1 + } + ], + "id": 590, + "nodeType": "InlineAssembly", + "src": "8387:70:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8476:49:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8490:25:0", + "value": { + "arguments": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8503:5:0" + }, + { + "name": "twos", + "nodeType": "YulIdentifier", + "src": "8510:4:0" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8499:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8499:16:0" + }, + "variableNames": [ + { + "name": "prod0", + "nodeType": "YulIdentifier", + "src": "8490:5:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "8490:5:0", + "valueSize": 1 + }, + { + "declaration": 552, + "isOffset": false, + "isSlot": false, + "src": "8503:5:0", + "valueSize": 1 + }, + { + "declaration": 584, + "isOffset": false, + "isSlot": false, + "src": "8510:4:0", + "valueSize": 1 + } + ], + "id": 591, + "nodeType": "InlineAssembly", + "src": "8467:58:0" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "8544:63:0", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "8558:39:0", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8578:1:0", + "type": "", + "value": "0" + }, + { + "name": "twos", + "nodeType": "YulIdentifier", + "src": "8581:4:0" + } + ], + "functionName": { + "name": "sub", + "nodeType": "YulIdentifier", + "src": "8574:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8574:12:0" + }, + { + "name": "twos", + "nodeType": "YulIdentifier", + "src": "8588:4:0" + } + ], + "functionName": { + "name": "div", + "nodeType": "YulIdentifier", + "src": "8570:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8570:23:0" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "8595:1:0", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "8566:3:0" + }, + "nodeType": "YulFunctionCall", + "src": "8566:31:0" + }, + "variableNames": [ + { + "name": "twos", + "nodeType": "YulIdentifier", + "src": "8558:4:0" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 584, + "isOffset": false, + "isSlot": false, + "src": "8558:4:0", + "valueSize": 1 + }, + { + "declaration": 584, + "isOffset": false, + "isSlot": false, + "src": "8581:4:0", + "valueSize": 1 + }, + { + "declaration": 584, + "isOffset": false, + "isSlot": false, + "src": "8588:4:0", + "valueSize": 1 + } + ], + "id": 592, + "nodeType": "InlineAssembly", + "src": "8535:72:0" + }, + { + "expression": { + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 593, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "8616:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 594, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 555, + "src": "8625:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 595, + "name": "twos", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 584, + "src": "8633:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8625:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8616:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 598, + "nodeType": "ExpressionStatement", + "src": "8616:21:0" + }, + { + "assignments": [ + 600 + ], + "declarations": [ + { + "constant": false, + "id": 600, + "mutability": "mutable", + "name": "inv", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "8648:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 599, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8648:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 607, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8663:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 602, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8667:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8663:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 604, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8662:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "32", + "id": 605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8682:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "8662:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8648:35:0" + }, + { + "expression": { + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 608, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8694:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8701:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 610, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8705:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 611, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8719:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8705:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8701:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8694:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 615, + "nodeType": "ExpressionStatement", + "src": "8694:28:0" + }, + { + "expression": { + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 616, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8752:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8759:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 618, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8763:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 619, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8777:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8763:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8759:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8752:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 623, + "nodeType": "ExpressionStatement", + "src": "8752:28:0" + }, + { + "expression": { + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 624, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8811:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8818:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 626, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8822:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 627, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8836:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8822:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8818:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8811:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 631, + "nodeType": "ExpressionStatement", + "src": "8811:28:0" + }, + { + "expression": { + "id": 638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 632, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8870:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8877:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 634, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8881:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 635, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8895:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8881:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8877:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8870:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 639, + "nodeType": "ExpressionStatement", + "src": "8870:28:0" + }, + { + "expression": { + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 640, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8929:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8936:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 642, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "8940:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 643, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8954:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8940:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8936:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8929:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 647, + "nodeType": "ExpressionStatement", + "src": "8929:28:0" + }, + { + "expression": { + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 648, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "8989:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8996:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 650, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 546, + "src": "9000:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 651, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "9014:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9000:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8996:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8989:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 655, + "nodeType": "ExpressionStatement", + "src": "8989:28:0" + }, + { + "expression": { + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 656, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9050:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 657, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 552, + "src": "9059:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 658, + "name": "inv", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 600, + "src": "9067:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9059:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9050:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 661, + "nodeType": "ExpressionStatement", + "src": "9050:20:0" + }, + { + "expression": { + "id": 662, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "9087:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 550, + "id": 663, + "nodeType": "Return", + "src": "9080:13:0" + } + ] + }, + "id": 665, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDiv", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 547, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 665, + "src": "7465:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 541, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7465:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 544, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 665, + "src": "7484:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7484:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "denominator", + "nodeType": "VariableDeclaration", + "scope": 665, + "src": "7503:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 545, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7503:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7455:73:0" + }, + "returnParameters": { + "id": 550, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 549, + "mutability": "mutable", + "name": "result", + "nodeType": "VariableDeclaration", + "scope": 665, + "src": "7552:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 548, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7552:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7551:16:0" + }, + "scope": 666, + "src": "7440:1660:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4771, + "src": "7417:1685:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 1048, + "linearizedBaseContracts": [ + 1048 + ], + "name": "TickMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 670, + "mutability": "constant", + "name": "MIN_TICK", + "nodeType": "VariableDeclaration", + "scope": 1048, + "src": "9127:42:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 667, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "9127:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "value": { + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "9162:7:0", + "subExpression": { + "hexValue": "383837323732", + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9163:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_887272_by_1", + "typeString": "int_const 887272" + }, + "value": "887272" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_887272_by_1", + "typeString": "int_const -887272" + } + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 674, + "mutability": "constant", + "name": "MAX_TICK", + "nodeType": "VariableDeclaration", + "scope": 1048, + "src": "9175:44:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 671, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "9175:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "value": { + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "9210:9:0", + "subExpression": { + "id": 672, + "name": "MIN_TICK", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 670, + "src": "9211:8:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 1046, + "nodeType": "Block", + "src": "9327:2478:0", + "statements": [ + { + "assignments": [ + 682 + ], + "declarations": [ + { + "constant": false, + "id": 682, + "mutability": "mutable", + "name": "absTick", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "9337:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9337:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 702, + "initialValue": { + "condition": { + "commonType": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 683, + "name": "tick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 676, + "src": "9363:4:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9370:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9363:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 698, + "name": "tick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 676, + "src": "9414:4:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "id": 697, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9407:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 696, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "9407:6:0", + "typeDescriptions": {} + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9407:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9399:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9399:7:0", + "typeDescriptions": {} + } + }, + "id": 700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9399:21:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9363:57:0", + "trueExpression": { + "arguments": [ + { + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "9382:13:0", + "subExpression": { + "arguments": [ + { + "id": 690, + "name": "tick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 676, + "src": "9390:4:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9383:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 688, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "9383:6:0", + "typeDescriptions": {} + } + }, + "id": 691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9383:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9374:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9374:7:0", + "typeDescriptions": {} + } + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9374:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9337:83:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 704, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "9438:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "arguments": [ + { + "id": 707, + "name": "MAX_TICK", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 674, + "src": "9457:8:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "id": 706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9449:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9449:7:0", + "typeDescriptions": {} + } + }, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9449:17:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9438:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "54", + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9468:3:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc", + "typeString": "literal_string \"T\"" + }, + "value": "T" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc", + "typeString": "literal_string \"T\"" + } + ], + "id": 703, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9430:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9430:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 712, + "nodeType": "ExpressionStatement", + "src": "9430:42:0" + }, + { + "assignments": [ + 714 + ], + "declarations": [ + { + "constant": false, + "id": 714, + "mutability": "mutable", + "name": "ratio", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "9483:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 713, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9483:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 723, + "initialValue": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 715, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "9507:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307831", + "id": 716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9517:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x1" + }, + "src": "9507:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9524:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9507:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030", + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9581:35:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "value": "0x100000000000000000000000000000000" + }, + "id": 722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9507:109:0", + "trueExpression": { + "hexValue": "30786666666362393333626436666164333761613264313632643161353934303031", + "id": 720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9536:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340265354078544963557816517032075149313_by_1", + "typeString": "int_const 3402...(31 digits omitted)...9313" + }, + "value": "0xfffcb933bd6fad37aa2d162d1a594001" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9483:133:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 724, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "9630:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307832", + "id": 725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9640:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "0x2" + }, + "src": "9630:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9647:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9630:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 738, + "nodeType": "IfStatement", + "src": "9626:95:0", + "trueBody": { + "expression": { + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 729, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9662:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 730, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9671:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786666663937323732333733643431333235396134363939303538306532313361", + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9679:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340248342086729790484326174814286782778_by_1", + "typeString": "int_const 3402...(31 digits omitted)...2778" + }, + "value": "0xfff97272373d413259a46990580e213a" + }, + "src": "9671:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 733, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9670:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9718:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "9670:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9662:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 737, + "nodeType": "ExpressionStatement", + "src": "9662:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 739, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "9735:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307834", + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9745:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "0x4" + }, + "src": "9735:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9752:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9735:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 753, + "nodeType": "IfStatement", + "src": "9731:95:0", + "trueBody": { + "expression": { + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 744, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9767:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 745, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9776:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786666663265353066356636353639333265663132333537636633633766646363", + "id": 746, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9784:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340214320654664324051920982716015181260_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1260" + }, + "value": "0xfff2e50f5f656932ef12357cf3c7fdcc" + }, + "src": "9776:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 748, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9775:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9823:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "9775:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9767:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 752, + "nodeType": "ExpressionStatement", + "src": "9767:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 754, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "9840:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307838", + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9850:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "0x8" + }, + "src": "9840:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9857:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9840:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 768, + "nodeType": "IfStatement", + "src": "9836:95:0", + "trueBody": { + "expression": { + "id": 766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 759, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9872:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 760, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9881:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786666653563616361376531306534653631633336323465616130393431636430", + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9889:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340146287995602323631171512101879684304_by_1", + "typeString": "int_const 3401...(31 digits omitted)...4304" + }, + "value": "0xffe5caca7e10e4e61c3624eaa0941cd0" + }, + "src": "9881:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 763, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9880:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9928:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "9880:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9872:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 767, + "nodeType": "ExpressionStatement", + "src": "9872:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 769, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "9945:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783130", + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9955:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "0x10" + }, + "src": "9945:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9963:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9945:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 783, + "nodeType": "IfStatement", + "src": "9941:96:0", + "trueBody": { + "expression": { + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 774, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9978:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 775, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "9987:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786666636239383433643630663631353963396462353838333563393236363434", + "id": 776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9995:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_340010263488231146823593991679159461444_by_1", + "typeString": "int_const 3400...(31 digits omitted)...1444" + }, + "value": "0xffcb9843d60f6159c9db58835c926644" + }, + "src": "9987:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 778, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9986:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10034:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "9986:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9978:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "9978:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 784, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10051:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783230", + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10061:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "0x20" + }, + "src": "10051:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10069:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10051:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 798, + "nodeType": "IfStatement", + "src": "10047:96:0", + "trueBody": { + "expression": { + "id": 796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 789, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10084:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 790, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10093:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786666393733623431666139386330383134373265363839366466623235346330", + "id": 791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10101:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_339738377640345403697157401104375502016_by_1", + "typeString": "int_const 3397...(31 digits omitted)...2016" + }, + "value": "0xff973b41fa98c081472e6896dfb254c0" + }, + "src": "10093:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 793, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10092:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10140:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10092:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10084:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 797, + "nodeType": "ExpressionStatement", + "src": "10084:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 799, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10157:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783430", + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10167:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "0x40" + }, + "src": "10157:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10175:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10157:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 813, + "nodeType": "IfStatement", + "src": "10153:96:0", + "trueBody": { + "expression": { + "id": 811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 804, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10190:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 805, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10199:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786666326561313634363663393661333834336563373862333236623532383631", + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10207:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_339195258003219555707034227454543997025_by_1", + "typeString": "int_const 3391...(31 digits omitted)...7025" + }, + "value": "0xff2ea16466c96a3843ec78b326b52861" + }, + "src": "10199:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 808, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10198:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10246:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10198:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10190:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 812, + "nodeType": "ExpressionStatement", + "src": "10190:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 814, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10263:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783830", + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10273:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "0x80" + }, + "src": "10263:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10281:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10263:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 828, + "nodeType": "IfStatement", + "src": "10259:96:0", + "trueBody": { + "expression": { + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 819, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10296:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 820, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10305:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786665356465653034366139396132613831316334363166313936396333303533", + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10313:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_338111622100601834656805679988414885971_by_1", + "typeString": "int_const 3381...(31 digits omitted)...5971" + }, + "value": "0xfe5dee046a99a2a811c461f1969c3053" + }, + "src": "10305:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 823, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10304:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10352:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10304:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10296:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 827, + "nodeType": "ExpressionStatement", + "src": "10296:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 829, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10369:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "3078313030", + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10379:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "value": "0x100" + }, + "src": "10369:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10388:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10369:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 843, + "nodeType": "IfStatement", + "src": "10365:97:0", + "trueBody": { + "expression": { + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 834, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10403:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 835, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10412:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786663626538366337393030613838616564636666633833623437396161336134", + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10420:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_335954724994790223023589805789778977700_by_1", + "typeString": "int_const 3359...(31 digits omitted)...7700" + }, + "value": "0xfcbe86c7900a88aedcffc83b479aa3a4" + }, + "src": "10412:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 838, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10411:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10459:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10411:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10403:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 842, + "nodeType": "ExpressionStatement", + "src": "10403:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 844, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10476:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "3078323030", + "id": 845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10486:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_512_by_1", + "typeString": "int_const 512" + }, + "value": "0x200" + }, + "src": "10476:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10495:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10476:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 858, + "nodeType": "IfStatement", + "src": "10472:97:0", + "trueBody": { + "expression": { + "id": 856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 849, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10510:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 850, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10519:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786639383761373235336163343133313736663262303734636637383135653534", + "id": 851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10527:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_331682121138379247127172139078559817300_by_1", + "typeString": "int_const 3316...(31 digits omitted)...7300" + }, + "value": "0xf987a7253ac413176f2b074cf7815e54" + }, + "src": "10519:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 853, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10518:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 854, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10566:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10518:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10510:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 857, + "nodeType": "ExpressionStatement", + "src": "10510:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 859, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10583:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "3078343030", + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10593:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1024_by_1", + "typeString": "int_const 1024" + }, + "value": "0x400" + }, + "src": "10583:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10602:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10583:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 873, + "nodeType": "IfStatement", + "src": "10579:97:0", + "trueBody": { + "expression": { + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 864, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10617:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 865, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10626:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786633333932623038323262373030303539343063376133393865346237306633", + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10634:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_323299236684853023288211250268160618739_by_1", + "typeString": "int_const 3232...(31 digits omitted)...8739" + }, + "value": "0xf3392b0822b70005940c7a398e4b70f3" + }, + "src": "10626:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 868, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10625:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10673:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10625:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10617:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 872, + "nodeType": "ExpressionStatement", + "src": "10617:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 874, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10690:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "3078383030", + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10700:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2048_by_1", + "typeString": "int_const 2048" + }, + "value": "0x800" + }, + "src": "10690:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10709:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10690:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 888, + "nodeType": "IfStatement", + "src": "10686:97:0", + "trueBody": { + "expression": { + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 879, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10724:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 880, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10733:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786537313539343735613263323962373434336232396337666136653838396439", + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10741:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_307163716377032989948697243942600083929_by_1", + "typeString": "int_const 3071...(31 digits omitted)...3929" + }, + "value": "0xe7159475a2c29b7443b29c7fa6e889d9" + }, + "src": "10733:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 883, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10732:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10780:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10732:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10724:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 887, + "nodeType": "ExpressionStatement", + "src": "10724:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 889, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10797:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307831303030", + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10807:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4096_by_1", + "typeString": "int_const 4096" + }, + "value": "0x1000" + }, + "src": "10797:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10817:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10797:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 903, + "nodeType": "IfStatement", + "src": "10793:98:0", + "trueBody": { + "expression": { + "id": 901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 894, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10832:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 895, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10841:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786430393766336264666432303232623838343561643866373932616135383235", + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10849:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_277268403626896220162999269216087595045_by_1", + "typeString": "int_const 2772...(31 digits omitted)...5045" + }, + "value": "0xd097f3bdfd2022b8845ad8f792aa5825" + }, + "src": "10841:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 898, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10840:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10888:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10840:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10832:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 902, + "nodeType": "ExpressionStatement", + "src": "10832:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 904, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "10905:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307832303030", + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10915:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_8192_by_1", + "typeString": "int_const 8192" + }, + "value": "0x2000" + }, + "src": "10905:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10925:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10905:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 918, + "nodeType": "IfStatement", + "src": "10901:98:0", + "trueBody": { + "expression": { + "id": 916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 909, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10940:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 910, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "10949:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30786139663734363436326438373066646638613635646331663930653036316535", + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10957:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_225923453940442621947126027127485391333_by_1", + "typeString": "int_const 2259...(31 digits omitted)...1333" + }, + "value": "0xa9f746462d870fdf8a65dc1f90e061e5" + }, + "src": "10949:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 913, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10948:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10996:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "10948:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10940:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 917, + "nodeType": "ExpressionStatement", + "src": "10940:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 919, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "11013:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307834303030", + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11023:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_16384_by_1", + "typeString": "int_const 16384" + }, + "value": "0x4000" + }, + "src": "11013:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11033:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11013:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 933, + "nodeType": "IfStatement", + "src": "11009:98:0", + "trueBody": { + "expression": { + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 924, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11048:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 925, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11057:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30783730643836396131353664326131623839306262336466363262616633326637", + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11065:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_149997214084966997727330242082538205943_by_1", + "typeString": "int_const 1499...(31 digits omitted)...5943" + }, + "value": "0x70d869a156d2a1b890bb3df62baf32f7" + }, + "src": "11057:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 928, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11056:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11104:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "11056:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11048:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 932, + "nodeType": "ExpressionStatement", + "src": "11048:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 934, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "11121:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307838303030", + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11131:6:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32768_by_1", + "typeString": "int_const 32768" + }, + "value": "0x8000" + }, + "src": "11121:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11141:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11121:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 948, + "nodeType": "IfStatement", + "src": "11117:98:0", + "trueBody": { + "expression": { + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 939, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11156:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 940, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11165:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30783331626531333566393764303866643938313233313530353534326663666136", + "id": 941, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11173:34:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_66119101136024775622716233608466517926_by_1", + "typeString": "int_const 6611...(30 digits omitted)...7926" + }, + "value": "0x31be135f97d08fd981231505542fcfa6" + }, + "src": "11165:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 943, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11164:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11212:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "11164:51:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11156:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 947, + "nodeType": "ExpressionStatement", + "src": "11156:59:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 949, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "11229:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783130303030", + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11239:7:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + }, + "value": "0x10000" + }, + "src": "11229:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11250:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11229:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 963, + "nodeType": "IfStatement", + "src": "11225:98:0", + "trueBody": { + "expression": { + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 954, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11265:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 955, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11274:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "307839616135303862356237613834653163363737646535346633653939626339", + "id": 956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11282:33:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_12847376061809297530290974190478138313_by_1", + "typeString": "int_const 1284...(30 digits omitted)...8313" + }, + "value": "0x9aa508b5b7a84e1c677de54f3e99bc9" + }, + "src": "11274:41:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 958, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11273:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11320:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "11273:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11265:58:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 962, + "nodeType": "ExpressionStatement", + "src": "11265:58:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 964, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "11337:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783230303030", + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11347:7:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_131072_by_1", + "typeString": "int_const 131072" + }, + "value": "0x20000" + }, + "src": "11337:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11358:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11337:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 978, + "nodeType": "IfStatement", + "src": "11333:97:0", + "trueBody": { + "expression": { + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 969, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11373:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 970, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11382:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3078356436616638646564623831313936363939633332393232356565363034", + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11390:32:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_485053260817066172746253684029974020_by_1", + "typeString": "int_const 4850...(28 digits omitted)...4020" + }, + "value": "0x5d6af8dedb81196699c329225ee604" + }, + "src": "11382:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 973, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11381:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11427:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "11381:49:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11373:57:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 977, + "nodeType": "ExpressionStatement", + "src": "11373:57:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 979, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "11444:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783430303030", + "id": 980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11454:7:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_262144_by_1", + "typeString": "int_const 262144" + }, + "value": "0x40000" + }, + "src": "11444:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11465:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11444:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 993, + "nodeType": "IfStatement", + "src": "11440:95:0", + "trueBody": { + "expression": { + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 984, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11480:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 985, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11489:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "307832323136653538346635666131656139323630343162656466653938", + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11497:30:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_691415978906521570653435304214168_by_1", + "typeString": "int_const 6914...(25 digits omitted)...4168" + }, + "value": "0x2216e584f5fa1ea926041bedfe98" + }, + "src": "11489:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 988, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11488:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11532:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "11488:47:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11480:55:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 992, + "nodeType": "ExpressionStatement", + "src": "11480:55:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 994, + "name": "absTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 682, + "src": "11549:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "30783830303030", + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11559:7:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_524288_by_1", + "typeString": "int_const 524288" + }, + "value": "0x80000" + }, + "src": "11549:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11570:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11549:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1008, + "nodeType": "IfStatement", + "src": "11545:90:0", + "trueBody": { + "expression": { + "id": 1006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 999, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11585:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1000, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11594:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "30783438613137303339316637646334323434346538666132", + "id": 1001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11602:25:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1404880482679654955896180642_by_1", + "typeString": "int_const 1404880482679654955896180642" + }, + "value": "0x48a170391f7dc42444e8fa2" + }, + "src": "11594:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1003, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11593:35:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "313238", + "id": 1004, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11632:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "11593:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11585:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1007, + "nodeType": "ExpressionStatement", + "src": "11585:50:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "id": 1011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1009, + "name": "tick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 676, + "src": "11650:4:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11657:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11650:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1022, + "nodeType": "IfStatement", + "src": "11646:47:0", + "trueBody": { + "expression": { + "id": 1020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1012, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11660:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11673:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 1014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11673:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 1013, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "11668:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11668:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 1017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "11668:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 1018, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11688:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11668:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11660:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1021, + "nodeType": "ExpressionStatement", + "src": "11660:33:0" + } + }, + { + "expression": { + "id": 1044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1023, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 679, + "src": "11704:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1026, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11741:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3332", + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11750:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "11741:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1029, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11740:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1030, + "name": "ratio", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "11757:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11766:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11771:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "11766:7:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + } + ], + "id": 1034, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11765:9:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + }, + "src": "11757:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11778:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11757:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "31", + "id": 1039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11786:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "id": 1040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "11757:30:0", + "trueExpression": { + "hexValue": "30", + "id": 1038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11782:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "id": 1041, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11756:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "11740:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11719:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 1024, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "11719:7:0", + "typeDescriptions": {} + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11719:79:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "11704:94:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "id": 1045, + "nodeType": "ExpressionStatement", + "src": "11704:94:0" + } + ] + }, + "id": 1047, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSqrtRatioAtTick", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 676, + "mutability": "mutable", + "name": "tick", + "nodeType": "VariableDeclaration", + "scope": 1047, + "src": "9254:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 675, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "9254:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + } + ], + "src": "9253:12:0" + }, + "returnParameters": { + "id": 680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 679, + "mutability": "mutable", + "name": "sqrtPriceX96", + "nodeType": "VariableDeclaration", + "scope": 1047, + "src": "9301:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 678, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9301:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + } + ], + "src": "9300:22:0" + }, + "scope": 1048, + "src": "9226:2579:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4771, + "src": "9104:2703:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "fullyImplemented": true, + "id": 1230, + "linearizedBaseContracts": [ + 1230 + ], + "name": "LiquidityAmounts", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1067, + "nodeType": "Block", + "src": "11903:47:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "id": 1061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1056, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "11922:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1059, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "11934:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11926:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 1057, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "11926:7:0", + "typeDescriptions": {} + } + }, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11926:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "11922:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 1062, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11921:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1063, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "11941:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11921:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1055, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11913:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1066, + "nodeType": "ExpressionStatement", + "src": "11913:30:0" + } + ] + }, + "id": 1068, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint128", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1050, + "mutability": "mutable", + "name": "x", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "11859:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11859:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11858:11:0" + }, + "returnParameters": { + "id": 1054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1053, + "mutability": "mutable", + "name": "y", + "nodeType": "VariableDeclaration", + "scope": 1068, + "src": "11892:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1052, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "11892:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "11891:11:0" + }, + "scope": 1230, + "src": "11840:110:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1112, + "nodeType": "Block", + "src": "12123:420:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1079, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "12137:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1080, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "12153:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "12137:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1090, + "nodeType": "IfStatement", + "src": "12133:110:0", + "trueBody": { + "expression": { + "id": 1088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1082, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "12181:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1083, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "12196:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 1084, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "12180:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", + "typeString": "tuple(uint160,uint160)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1085, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "12214:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1086, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "12229:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 1087, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12213:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", + "typeString": "tuple(uint160,uint160)" + } + }, + "src": "12180:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1089, + "nodeType": "ExpressionStatement", + "src": "12180:63:0" + } + }, + { + "assignments": [ + 1092 + ], + "declarations": [ + { + "constant": false, + "id": 1092, + "mutability": "mutable", + "name": "intermediate", + "nodeType": "VariableDeclaration", + "scope": 1112, + "src": "12253:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12253:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1100, + "initialValue": { + "arguments": [ + { + "id": 1095, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "12300:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1096, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "12315:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "expression": { + "id": 1097, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "12330:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 1098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "12330:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1093, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "12284:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "12284:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12284:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12253:94:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1104, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1074, + "src": "12428:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1105, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "12453:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1106, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1072, + "src": "12483:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1107, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1070, + "src": "12499:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "12483:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "expression": { + "id": 1102, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "12395:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 1103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "12395:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12395:131:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1101, + "name": "toUint128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1068, + "src": "12372:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12372:164:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 1078, + "id": 1111, + "nodeType": "Return", + "src": "12357:179:0" + } + ] + }, + "id": 1113, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLiquidityForAmount0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1070, + "mutability": "mutable", + "name": "sqrtRatioAX96", + "nodeType": "VariableDeclaration", + "scope": 1113, + "src": "11997:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 1069, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "11997:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1072, + "mutability": "mutable", + "name": "sqrtRatioBX96", + "nodeType": "VariableDeclaration", + "scope": 1113, + "src": "12028:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 1071, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "12028:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1074, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 1113, + "src": "12059:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11987:93:0" + }, + "returnParameters": { + "id": 1078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1077, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 1113, + "src": "12104:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1076, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "12104:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "12103:19:0" + }, + "scope": 1230, + "src": "11956:587:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1148, + "nodeType": "Block", + "src": "12716:320:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 1126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1124, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "12730:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1125, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "12746:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "12730:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1135, + "nodeType": "IfStatement", + "src": "12726:110:0", + "trueBody": { + "expression": { + "id": 1133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1127, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "12774:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1128, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "12789:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 1129, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "12773:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", + "typeString": "tuple(uint160,uint160)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1130, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "12807:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1131, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "12822:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 1132, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12806:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", + "typeString": "tuple(uint160,uint160)" + } + }, + "src": "12773:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1134, + "nodeType": "ExpressionStatement", + "src": "12773:63:0" + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1139, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1119, + "src": "12917:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 1140, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "12942:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 1141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "12942:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 1144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1142, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1117, + "src": "12976:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1143, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1115, + "src": "12992:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "12976:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "expression": { + "id": 1137, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "12884:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 1138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "12884:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12884:135:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1136, + "name": "toUint128", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1068, + "src": "12861:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint256) pure returns (uint128)" + } + }, + "id": 1146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12861:168:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 1123, + "id": 1147, + "nodeType": "Return", + "src": "12846:183:0" + } + ] + }, + "id": 1149, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLiquidityForAmount1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1115, + "mutability": "mutable", + "name": "sqrtRatioAX96", + "nodeType": "VariableDeclaration", + "scope": 1149, + "src": "12590:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 1114, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "12590:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1117, + "mutability": "mutable", + "name": "sqrtRatioBX96", + "nodeType": "VariableDeclaration", + "scope": 1149, + "src": "12621:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 1116, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "12621:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1119, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 1149, + "src": "12652:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12652:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12580:93:0" + }, + "returnParameters": { + "id": 1123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1122, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 1149, + "src": "12697:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1121, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "12697:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "12696:19:0" + }, + "scope": 1230, + "src": "12549:487:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1228, + "nodeType": "Block", + "src": "13264:839:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1164, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "13278:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1165, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "13294:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "13278:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1175, + "nodeType": "IfStatement", + "src": "13274:110:0", + "trueBody": { + "expression": { + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 1167, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "13322:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1168, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "13337:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 1169, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "13321:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", + "typeString": "tuple(uint160,uint160)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 1170, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "13355:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1171, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "13370:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "id": 1172, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13354:30:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", + "typeString": "tuple(uint160,uint160)" + } + }, + "src": "13321:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1174, + "nodeType": "ExpressionStatement", + "src": "13321:63:0" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 1178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1176, + "name": "sqrtRatioX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1151, + "src": "13399:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 1177, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "13415:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "13399:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "id": 1190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1188, + "name": "sqrtRatioX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1151, + "src": "13600:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1189, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "13615:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "13600:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1225, + "nodeType": "Block", + "src": "13937:160:0", + "statements": [ + { + "expression": { + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1217, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1162, + "src": "13951:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1219, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "14003:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1220, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "14034:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1221, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "14065:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1218, + "name": "getLiquidityForAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1149, + "src": "13963:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint160,uint160,uint256) pure returns (uint128)" + } + }, + "id": 1222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13963:123:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "13951:135:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 1224, + "nodeType": "ExpressionStatement", + "src": "13951:135:0" + } + ] + }, + "id": 1226, + "nodeType": "IfStatement", + "src": "13596:501:0", + "trueBody": { + "id": 1216, + "nodeType": "Block", + "src": "13630:301:0", + "statements": [ + { + "assignments": [ + 1192 + ], + "declarations": [ + { + "constant": false, + "id": 1192, + "mutability": "mutable", + "name": "liquidity0", + "nodeType": "VariableDeclaration", + "scope": 1216, + "src": "13644:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1191, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13644:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 1198, + "initialValue": { + "arguments": [ + { + "id": 1194, + "name": "sqrtRatioX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1151, + "src": "13700:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1195, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "13714:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1196, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1157, + "src": "13729:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1193, + "name": "getLiquidityForAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "13677:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint160,uint160,uint256) pure returns (uint128)" + } + }, + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13677:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13644:93:0" + }, + { + "assignments": [ + 1200 + ], + "declarations": [ + { + "constant": false, + "id": 1200, + "mutability": "mutable", + "name": "liquidity1", + "nodeType": "VariableDeclaration", + "scope": 1216, + "src": "13751:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1199, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13751:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 1206, + "initialValue": { + "arguments": [ + { + "id": 1202, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "13807:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1203, + "name": "sqrtRatioX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1151, + "src": "13822:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1204, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "13836:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1201, + "name": "getLiquidityForAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1149, + "src": "13784:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint160,uint160,uint256) pure returns (uint128)" + } + }, + "id": 1205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13784:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13751:93:0" + }, + { + "expression": { + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1207, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1162, + "src": "13859:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1208, + "name": "liquidity0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1192, + "src": "13871:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1209, + "name": "liquidity1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "13884:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "13871:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "id": 1212, + "name": "liquidity1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "13910:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "13871:49:0", + "trueExpression": { + "id": 1211, + "name": "liquidity0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1192, + "src": "13897:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "13859:61:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 1215, + "nodeType": "ExpressionStatement", + "src": "13859:61:0" + } + ] + } + }, + "id": 1227, + "nodeType": "IfStatement", + "src": "13395:702:0", + "trueBody": { + "id": 1187, + "nodeType": "Block", + "src": "13430:160:0", + "statements": [ + { + "expression": { + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1179, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1162, + "src": "13444:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 1181, + "name": "sqrtRatioAX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1153, + "src": "13496:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1182, + "name": "sqrtRatioBX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1155, + "src": "13527:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "id": 1183, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1157, + "src": "13558:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1180, + "name": "getLiquidityForAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "13456:22:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint160,uint160,uint256) pure returns (uint128)" + } + }, + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13456:123:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "13444:135:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 1186, + "nodeType": "ExpressionStatement", + "src": "13444:135:0" + } + ] + } + } + ] + }, + "id": 1229, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLiquidityForAmounts", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1151, + "mutability": "mutable", + "name": "sqrtRatioX96", + "nodeType": "VariableDeclaration", + "scope": 1229, + "src": "13083:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 1150, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "13083:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1153, + "mutability": "mutable", + "name": "sqrtRatioAX96", + "nodeType": "VariableDeclaration", + "scope": 1229, + "src": "13113:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 1152, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "13113:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1155, + "mutability": "mutable", + "name": "sqrtRatioBX96", + "nodeType": "VariableDeclaration", + "scope": 1229, + "src": "13144:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 1154, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "13144:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1157, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 1229, + "src": "13175:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1156, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13175:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1159, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 1229, + "src": "13200:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13200:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13073:148:0" + }, + "returnParameters": { + "id": 1163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1162, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 1229, + "src": "13245:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1161, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "13245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "13244:19:0" + }, + "scope": 1230, + "src": "13042:1061:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4771, + "src": "11809:2296:0" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1231, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 69, + "src": "14137:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 1232, + "nodeType": "InheritanceSpecifier", + "src": "14137:6:0" + } + ], + "contractDependencies": [ + 69 + ], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1387, + "linearizedBaseContracts": [ + 1387, + 69 + ], + "name": "ICellarPoolShare", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ICellarPoolShare.MintParams", + "id": 1255, + "members": [ + { + "constant": false, + "id": 1234, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14178:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14178:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1236, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14202:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1235, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14202:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1238, + "mutability": "mutable", + "name": "fee", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14226:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 1237, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "14226:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1240, + "mutability": "mutable", + "name": "tickLower", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14246:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 1239, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "14246:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1242, + "mutability": "mutable", + "name": "tickUpper", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14271:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 1241, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "14271:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1244, + "mutability": "mutable", + "name": "amount0Desired", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14296:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1243, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14296:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1246, + "mutability": "mutable", + "name": "amount1Desired", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14328:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1245, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14328:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1248, + "mutability": "mutable", + "name": "amount0Min", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14360:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14360:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1250, + "mutability": "mutable", + "name": "amount1Min", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14388:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1249, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14388:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1252, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14416:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14416:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1254, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "scope": 1255, + "src": "14443:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MintParams", + "nodeType": "StructDefinition", + "scope": 1387, + "src": "14150:316:0", + "visibility": "public" + }, + { + "canonicalName": "ICellarPoolShare.MintResult", + "id": 1264, + "members": [ + { + "constant": false, + "id": 1257, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "14500:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1256, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14500:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1259, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "14525:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1258, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "14525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1261, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "14552:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1260, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14552:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1263, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 1264, + "src": "14577:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1262, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14577:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MintResult", + "nodeType": "StructDefinition", + "scope": 1387, + "src": "14472:127:0", + "visibility": "public" + }, + { + "canonicalName": "ICellarPoolShare.CellarAddParams", + "id": 1277, + "members": [ + { + "constant": false, + "id": 1266, + "mutability": "mutable", + "name": "amount0Desired", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "14638:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1265, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14638:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1268, + "mutability": "mutable", + "name": "amount1Desired", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "14670:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1267, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14670:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1270, + "mutability": "mutable", + "name": "amount0Min", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "14702:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1269, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14702:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1272, + "mutability": "mutable", + "name": "amount1Min", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "14730:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14730:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1274, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "14758:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1273, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14758:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1276, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "scope": 1277, + "src": "14785:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1275, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14785:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "CellarAddParams", + "nodeType": "StructDefinition", + "scope": 1387, + "src": "14605:203:0", + "visibility": "public" + }, + { + "canonicalName": "ICellarPoolShare.CellarRemoveParams", + "id": 1288, + "members": [ + { + "constant": false, + "id": 1279, + "mutability": "mutable", + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "14850:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1278, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14850:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1281, + "mutability": "mutable", + "name": "amount0Min", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "14879:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1280, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14879:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1283, + "mutability": "mutable", + "name": "amount1Min", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "14907:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14907:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1285, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "14935:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14935:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1287, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "scope": 1288, + "src": "14962:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14962:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "CellarRemoveParams", + "nodeType": "StructDefinition", + "scope": 1387, + "src": "14814:171:0", + "visibility": "public" + }, + { + "canonicalName": "ICellarPoolShare.CellarTickInfo", + "id": 1297, + "members": [ + { + "constant": false, + "id": 1290, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "15023:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "typeName": { + "id": 1289, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "15023:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1292, + "mutability": "mutable", + "name": "tickUpper", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "15048:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 1291, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "15048:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1294, + "mutability": "mutable", + "name": "tickLower", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "15073:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 1293, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "15073:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1296, + "mutability": "mutable", + "name": "weight", + "nodeType": "VariableDeclaration", + "scope": 1297, + "src": "15098:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 1295, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15098:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "name": "CellarTickInfo", + "nodeType": "StructDefinition", + "scope": 1387, + "src": "14991:127:0", + "visibility": "public" + }, + { + "canonicalName": "ICellarPoolShare.UintPair", + "id": 1302, + "members": [ + { + "constant": false, + "id": 1299, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "15150:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1298, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15150:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1301, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "scope": 1302, + "src": "15169:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15169:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "UintPair", + "nodeType": "StructDefinition", + "scope": 1387, + "src": "15124:61:0", + "visibility": "public" + }, + { + "anonymous": false, + "id": 1314, + "name": "AddedLiquidity", + "nodeType": "EventDefinition", + "parameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1304, + "indexed": true, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "15221:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15221:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1306, + "indexed": true, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "15253:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15253:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1308, + "indexed": false, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "15285:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1307, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "15285:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1310, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "15312:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15312:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1312, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 1314, + "src": "15337:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15337:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15211:147:0" + }, + "src": "15191:168:0" + }, + { + "anonymous": false, + "id": 1326, + "name": "RemovedLiquidity", + "nodeType": "EventDefinition", + "parameters": { + "id": 1325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1316, + "indexed": true, + "mutability": "mutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "15397:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15397:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1318, + "indexed": true, + "mutability": "mutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "15429:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15429:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1320, + "indexed": false, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "15461:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1319, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "15461:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1322, + "indexed": false, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "15488:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1321, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15488:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1324, + "indexed": false, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "15513:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1323, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15513:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15387:147:0" + }, + "src": "15365:170:0" + }, + { + "functionSelector": "33bc230a", + "id": 1331, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidityForUniV3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1328, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 1331, + "src": "15571:37:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + }, + "typeName": { + "id": 1327, + "name": "CellarAddParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1277, + "src": "15571:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + } + }, + "visibility": "internal" + } + ], + "src": "15570:39:0" + }, + "returnParameters": { + "id": 1330, + "nodeType": "ParameterList", + "parameters": [], + "src": "15622:0:0" + }, + "scope": 1387, + "src": "15541:82:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "70e032b1", + "id": 1336, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLiquidityEthForUniV3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1333, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 1336, + "src": "15662:37:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + }, + "typeName": { + "id": 1332, + "name": "CellarAddParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1277, + "src": "15662:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + } + }, + "visibility": "internal" + } + ], + "src": "15661:39:0" + }, + "returnParameters": { + "id": 1335, + "nodeType": "ParameterList", + "parameters": [], + "src": "15725:0:0" + }, + "scope": 1387, + "src": "15629:97:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "276cd920", + "id": 1341, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityFromUniV3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1338, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 1341, + "src": "15766:40:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + }, + "typeName": { + "id": 1337, + "name": "CellarRemoveParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1288, + "src": "15766:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + } + }, + "visibility": "internal" + } + ], + "src": "15765:42:0" + }, + "returnParameters": { + "id": 1340, + "nodeType": "ParameterList", + "parameters": [], + "src": "15820:0:0" + }, + "scope": 1387, + "src": "15732:89:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a2d96f5f", + "id": 1346, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "removeLiquidityEthFromUniV3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1343, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 1346, + "src": "15873:40:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + }, + "typeName": { + "id": 1342, + "name": "CellarRemoveParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1288, + "src": "15873:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + } + }, + "visibility": "internal" + } + ], + "src": "15863:56:0" + }, + "returnParameters": { + "id": 1345, + "nodeType": "ParameterList", + "parameters": [], + "src": "15928:0:0" + }, + "scope": 1387, + "src": "15827:102:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "fdb5a03e", + "id": 1349, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "reinvest", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1347, + "nodeType": "ParameterList", + "parameters": [], + "src": "15952:2:0" + }, + "returnParameters": { + "id": 1348, + "nodeType": "ParameterList", + "parameters": [], + "src": "15963:0:0" + }, + "scope": 1387, + "src": "15935:29:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4623c91d", + "id": 1356, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setValidator", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1351, + "mutability": "mutable", + "name": "_validator", + "nodeType": "VariableDeclaration", + "scope": 1356, + "src": "15992:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15992:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1353, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1356, + "src": "16012:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1352, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16012:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "15991:32:0" + }, + "returnParameters": { + "id": 1355, + "nodeType": "ParameterList", + "parameters": [], + "src": "16032:0:0" + }, + "scope": 1387, + "src": "15970:63:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f2fde38b", + "id": 1361, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1358, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 1361, + "src": "16066:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1357, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16066:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16065:18:0" + }, + "returnParameters": { + "id": 1360, + "nodeType": "ParameterList", + "parameters": [], + "src": "16092:0:0" + }, + "scope": 1387, + "src": "16039:54:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8e005553", + "id": 1366, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setFee", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1363, + "mutability": "mutable", + "name": "newFee", + "nodeType": "VariableDeclaration", + "scope": 1366, + "src": "16115:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1362, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "16115:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "16114:15:0" + }, + "returnParameters": { + "id": 1365, + "nodeType": "ParameterList", + "parameters": [], + "src": "16138:0:0" + }, + "scope": 1387, + "src": "16099:40:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8da5cb5b", + "id": 1371, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1367, + "nodeType": "ParameterList", + "parameters": [], + "src": "16159:2:0" + }, + "returnParameters": { + "id": 1370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1369, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1371, + "src": "16185:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16185:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16184:9:0" + }, + "scope": 1387, + "src": "16145:49:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "06fdde03", + "id": 1376, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1372, + "nodeType": "ParameterList", + "parameters": [], + "src": "16213:2:0" + }, + "returnParameters": { + "id": 1375, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1374, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1376, + "src": "16239:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1373, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "16239:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "16238:15:0" + }, + "scope": 1387, + "src": "16200:54:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "95d89b41", + "id": 1381, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1377, + "nodeType": "ParameterList", + "parameters": [], + "src": "16275:2:0" + }, + "returnParameters": { + "id": 1380, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1379, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1381, + "src": "16301:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1378, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "16301:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "16300:15:0" + }, + "scope": 1387, + "src": "16260:56:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "313ce567", + "id": 1386, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1382, + "nodeType": "ParameterList", + "parameters": [], + "src": "16339:2:0" + }, + "returnParameters": { + "id": 1385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1384, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1386, + "src": "16365:5:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1383, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16365:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "16364:7:0" + }, + "scope": 1387, + "src": "16322:50:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "14107:2267:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 1396, + "linearizedBaseContracts": [ + 1396 + ], + "name": "IWETH", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "d0e30db0", + "id": 1390, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1388, + "nodeType": "ParameterList", + "parameters": [], + "src": "16414:2:0" + }, + "returnParameters": { + "id": 1389, + "nodeType": "ParameterList", + "parameters": [], + "src": "16433:0:0" + }, + "scope": 1396, + "src": "16398:36:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2e1a7d4d", + "id": 1395, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1392, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1395, + "src": "16458:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1391, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16458:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16457:9:0" + }, + "returnParameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [], + "src": "16475:0:0" + }, + "scope": 1396, + "src": "16440:36:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "16376:102:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 1435, + "linearizedBaseContracts": [ + 1435 + ], + "name": "BlockLock", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1399, + "mutability": "constant", + "name": "BLOCK_LOCK_COUNT", + "nodeType": "VariableDeclaration", + "scope": 1435, + "src": "16557:45:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1397, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16557:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16601:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "9f3e8b34", + "id": 1403, + "mutability": "mutable", + "name": "lastLockedBlock", + "nodeType": "VariableDeclaration", + "scope": 1435, + "src": "16663:50:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1402, + "keyType": { + "id": 1400, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16671:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "16663:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1401, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16682:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "public" + }, + { + "body": { + "id": 1417, + "nodeType": "Block", + "src": "16761:76:0", + "statements": [ + { + "expression": { + "id": 1415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1408, + "name": "lastLockedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1403, + "src": "16771:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1410, + "indexExpression": { + "id": 1409, + "name": "_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1405, + "src": "16787:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16771:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1411, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "16799:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "16799:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 1413, + "name": "BLOCK_LOCK_COUNT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1399, + "src": "16814:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16799:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16771:59:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1416, + "nodeType": "ExpressionStatement", + "src": "16771:59:0" + } + ] + }, + "id": 1418, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "lock", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1405, + "mutability": "mutable", + "name": "_address", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "16734:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1404, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16734:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16733:18:0" + }, + "returnParameters": { + "id": 1407, + "nodeType": "ParameterList", + "parameters": [], + "src": "16761:0:0" + }, + "scope": 1435, + "src": "16720:117:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1433, + "nodeType": "Block", + "src": "16885:100:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1423, + "name": "lastLockedBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1403, + "src": "16903:15:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1425, + "indexExpression": { + "id": 1424, + "name": "lockedAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1420, + "src": "16919:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "16903:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 1426, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "16937:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "src": "16937:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16903:46:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523330", + "id": 1429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16951:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2023d9bd35dfc2f245d76061e53d0ff8d185edf4246878b82d30fe779472a56f", + "typeString": "literal_string \"R30\"" + }, + "value": "R30" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2023d9bd35dfc2f245d76061e53d0ff8d185edf4246878b82d30fe779472a56f", + "typeString": "literal_string \"R30\"" + } + ], + "id": 1422, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "16895:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16895:62:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1431, + "nodeType": "ExpressionStatement", + "src": "16895:62:0" + }, + { + "id": 1432, + "nodeType": "PlaceholderStatement", + "src": "16977:1:0" + } + ] + }, + "id": 1434, + "name": "notLocked", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1420, + "mutability": "mutable", + "name": "lockedAddress", + "nodeType": "VariableDeclaration", + "scope": 1434, + "src": "16862:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1419, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16862:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16861:23:0" + }, + "src": "16843:142:0", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4771, + "src": "16480:507:0" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1436, + "name": "ICellarPoolShare", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1387, + "src": "17017:16:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICellarPoolShare_$1387", + "typeString": "contract ICellarPoolShare" + } + }, + "id": 1437, + "nodeType": "InheritanceSpecifier", + "src": "17017:16:0" + }, + { + "baseName": { + "id": 1438, + "name": "BlockLock", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1435, + "src": "17035:9:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BlockLock_$1435", + "typeString": "contract BlockLock" + } + }, + "id": 1439, + "nodeType": "InheritanceSpecifier", + "src": "17035:9:0" + } + ], + "contractDependencies": [ + 69, + 1387, + 1435 + ], + "contractKind": "contract", + "fullyImplemented": true, + "id": 4770, + "linearizedBaseContracts": [ + 4770, + 1435, + 1387, + 69 + ], + "name": "CellarPoolShare", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1442, + "libraryName": { + "id": 1440, + "name": "SafeERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 536, + "src": "17057:9:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$536", + "typeString": "library SafeERC20" + } + }, + "nodeType": "UsingForDirective", + "src": "17051:27:0", + "typeName": { + "id": 1441, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 69, + "src": "17071:6:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 1445, + "mutability": "constant", + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17084:92:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17084:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "hexValue": "307843333634343262346134353232453837313339394344373137614244443834374162313146453838", + "id": 1444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17134:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1448, + "mutability": "constant", + "name": "UNISWAPV3FACTORY", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17183:82:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1446, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17183:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "hexValue": "307831463938343331633861443938353233363331414534613539663236373334366561333146393834", + "id": 1447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17223:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0x1F98431c8aD98523631AE4a59f267346ea31F984" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1451, + "mutability": "constant", + "name": "SWAPROUTER", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17272:76:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1449, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17272:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "hexValue": "307845353932343237413041456365393244653345646565314631384530313537433035383631353634", + "id": 1450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17306:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0xE592427A0AEce92De3Edee1F18E0157C05861564" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1454, + "mutability": "constant", + "name": "WETH", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17355:66:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17355:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", + "id": 1453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17379:42:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 1457, + "mutability": "constant", + "name": "FEEDOMINATOR", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17428:36:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1455, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17428:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": { + "hexValue": "3130303030", + "id": 1456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17459:5:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1461, + "mutability": "mutable", + "name": "_balances", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17471:45:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1460, + "keyType": { + "id": 1458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17479:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "17471:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17490:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1467, + "mutability": "mutable", + "name": "_allowances", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17523:67:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 1466, + "keyType": { + "id": 1462, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17531:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "17523:47:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 1465, + "keyType": { + "id": 1463, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17550:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "17542:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 1464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17561:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "223b3b7a", + "id": 1471, + "mutability": "mutable", + "name": "validator", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17597:41:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1470, + "keyType": { + "id": 1468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17605:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "17597:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1469, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17616:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1473, + "mutability": "mutable", + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17644:28:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17644:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1475, + "mutability": "mutable", + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17678:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1474, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17678:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1477, + "mutability": "mutable", + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17706:20:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 1476, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17706:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1479, + "mutability": "mutable", + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17732:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 1478, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17732:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "0dfe1681", + "id": 1481, + "mutability": "immutable", + "name": "token0", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17761:31:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17761:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d21220a7", + "id": 1483, + "mutability": "immutable", + "name": "token1", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17798:31:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17798:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7cf134cb", + "id": 1485, + "mutability": "immutable", + "name": "feeLevel", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17835:32:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 1484, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "17835:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "15723866", + "id": 1488, + "mutability": "mutable", + "name": "cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17873:38:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 1486, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "17873:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 1487, + "nodeType": "ArrayTypeName", + "src": "17873:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1490, + "mutability": "mutable", + "name": "_isEntered", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17917:23:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1489, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17917:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "private" + }, + { + "constant": false, + "functionSelector": "ddca3f43", + "id": 1493, + "mutability": "mutable", + "name": "fee", + "nodeType": "VariableDeclaration", + "scope": 4770, + "src": "17946:24:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 1491, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "17946:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": { + "hexValue": "31303030", + "id": 1492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17966:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "visibility": "public" + }, + { + "body": { + "id": 1614, + "nodeType": "Block", + "src": "18180:905:0", + "statements": [ + { + "expression": { + "id": 1511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1509, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1477, + "src": "18190:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1510, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1495, + "src": "18198:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "18190:13:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1512, + "nodeType": "ExpressionStatement", + "src": "18190:13:0" + }, + { + "expression": { + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1513, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1479, + "src": "18213:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1514, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "18223:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "18213:17:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1516, + "nodeType": "ExpressionStatement", + "src": "18213:17:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1518, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "18248:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 1519, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1501, + "src": "18258:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18248:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5239", + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18267:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6ee52e457a9d276dcc23a651c6a429742400a539e263fca57d62b7e6adee7a4f", + "typeString": "literal_string \"R9\"" + }, + "value": "R9" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6ee52e457a9d276dcc23a651c6a429742400a539e263fca57d62b7e6adee7a4f", + "typeString": "literal_string \"R9\"" + } + ], + "id": 1517, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18240:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18240:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1523, + "nodeType": "ExpressionStatement", + "src": "18240:32:0" + }, + { + "expression": { + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1524, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "18307:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1525, + "name": "_token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "18316:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18307:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1527, + "nodeType": "ExpressionStatement", + "src": "18307:16:0" + }, + { + "expression": { + "id": 1530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1528, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "18333:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1529, + "name": "_token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1501, + "src": "18342:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18333:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1531, + "nodeType": "ExpressionStatement", + "src": "18333:16:0" + }, + { + "expression": { + "id": 1534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1532, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "18359:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1533, + "name": "_feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1503, + "src": "18370:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "18359:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "id": 1535, + "nodeType": "ExpressionStatement", + "src": "18359:20:0" + }, + { + "body": { + "id": 1607, + "nodeType": "Block", + "src": "18442:608:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 1553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 1548, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18464:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1550, + "indexExpression": { + "id": 1549, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18480:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18464:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 1551, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "18464:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18492:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18464:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523130", + "id": 1554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18495:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c", + "typeString": "literal_string \"R10\"" + }, + "value": "R10" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c", + "typeString": "literal_string \"R10\"" + } + ], + "id": 1547, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18456:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18456:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1556, + "nodeType": "ExpressionStatement", + "src": "18456:45:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 1558, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18548:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1560, + "indexExpression": { + "id": 1559, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18564:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18548:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "18548:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18578:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18548:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523131", + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18581:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0", + "typeString": "literal_string \"R11\"" + }, + "value": "R11" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0", + "typeString": "literal_string \"R11\"" + } + ], + "id": 1557, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18540:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18540:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1566, + "nodeType": "ExpressionStatement", + "src": "18540:47:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1567, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18629:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18633:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "18629:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1586, + "nodeType": "IfStatement", + "src": "18625:143:0", + "trueBody": { + "id": 1585, + "nodeType": "Block", + "src": "18636:132:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "id": 1581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 1571, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18662:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1573, + "indexExpression": { + "id": 1572, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18678:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18662:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 1574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "18662:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 1575, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18694:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1579, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1576, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18710:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 1577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18714:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "18710:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18694:22:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 1580, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "18694:32:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "src": "18662:64:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523132", + "id": 1582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18728:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5", + "typeString": "literal_string \"R12\"" + }, + "value": "R12" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5", + "typeString": "literal_string \"R12\"" + } + ], + "id": 1570, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "18654:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18654:80:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1584, + "nodeType": "ExpressionStatement", + "src": "18654:80:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18856:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "expression": { + "baseExpression": { + "id": 1592, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18882:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1594, + "indexExpression": { + "id": 1593, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18898:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18882:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 1595, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "18882:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + { + "expression": { + "baseExpression": { + "id": 1596, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18935:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1598, + "indexExpression": { + "id": 1597, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18951:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18935:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 1599, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "18935:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + { + "expression": { + "baseExpression": { + "id": 1600, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18985:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1602, + "indexExpression": { + "id": 1601, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "19001:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18985:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 1603, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "18985:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "id": 1590, + "name": "CellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1297, + "src": "18818:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CellarTickInfo_$1297_storage_ptr_$", + "typeString": "type(struct ICellarPoolShare.CellarTickInfo storage pointer)" + } + }, + "id": 1604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenId", + "tickUpper", + "tickLower", + "weight" + ], + "nodeType": "FunctionCall", + "src": "18818:207:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + ], + "expression": { + "id": 1587, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "18781:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "18781:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_CellarTickInfo_$1297_storage_$returns$__$", + "typeString": "function (struct ICellarPoolShare.CellarTickInfo storage ref)" + } + }, + "id": 1605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "18781:258:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1606, + "nodeType": "ExpressionStatement", + "src": "18781:258:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1540, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18409:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 1541, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1506, + "src": "18413:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 1542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "18413:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "18409:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1608, + "initializationExpression": { + "assignments": [ + 1537 + ], + "declarations": [ + { + "constant": false, + "id": 1537, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1608, + "src": "18394:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18394:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1539, + "initialValue": { + "hexValue": "30", + "id": 1538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18406:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "18394:13:0" + }, + "loopExpression": { + "expression": { + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "18437:3:0", + "subExpression": { + "id": 1544, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1537, + "src": "18437:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1546, + "nodeType": "ExpressionStatement", + "src": "18437:3:0" + }, + "nodeType": "ForStatement", + "src": "18389:661:0" + }, + { + "expression": { + "id": 1612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1609, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "19059:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 1610, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19068:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "19068:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "19059:19:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1613, + "nodeType": "ExpressionStatement", + "src": "19059:19:0" + } + ] + }, + "id": 1615, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1495, + "mutability": "mutable", + "name": "name_", + "nodeType": "VariableDeclaration", + "scope": 1615, + "src": "17998:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1494, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "17998:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1497, + "mutability": "mutable", + "name": "symbol_", + "nodeType": "VariableDeclaration", + "scope": 1615, + "src": "18027:21:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1496, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18027:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1499, + "mutability": "mutable", + "name": "_token0", + "nodeType": "VariableDeclaration", + "scope": 1615, + "src": "18058:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1498, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18058:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1501, + "mutability": "mutable", + "name": "_token1", + "nodeType": "VariableDeclaration", + "scope": 1615, + "src": "18083:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1500, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18083:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1503, + "mutability": "mutable", + "name": "_feeLevel", + "nodeType": "VariableDeclaration", + "scope": 1615, + "src": "18108:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 1502, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "18108:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1506, + "mutability": "mutable", + "name": "_cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 1615, + "src": "18134:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 1504, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "18134:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 1505, + "nodeType": "ArrayTypeName", + "src": "18134:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + } + ], + "src": "17988:191:0" + }, + "returnParameters": { + "id": 1508, + "nodeType": "ParameterList", + "parameters": [], + "src": "18180:0:0" + }, + "scope": 4770, + "src": "17977:1108:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 1626, + "nodeType": "Block", + "src": "19116:82:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 1618, + "name": "validator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1471, + "src": "19134:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1621, + "indexExpression": { + "expression": { + "id": 1619, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19144:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "19144:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19134:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523133", + "id": 1622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19157:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2959ad5aff7631ddbc1e2fda1dcba192feba94b00508f94e9b81cde2810d7750", + "typeString": "literal_string \"R13\"" + }, + "value": "R13" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2959ad5aff7631ddbc1e2fda1dcba192feba94b00508f94e9b81cde2810d7750", + "typeString": "literal_string \"R13\"" + } + ], + "id": 1617, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19126:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19126:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1624, + "nodeType": "ExpressionStatement", + "src": "19126:37:0" + }, + { + "id": 1625, + "nodeType": "PlaceholderStatement", + "src": "19190:1:0" + } + ] + }, + "id": 1627, + "name": "onlyValidator", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1616, + "nodeType": "ParameterList", + "parameters": [], + "src": "19113:2:0" + }, + "src": "19091:107:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1644, + "nodeType": "Block", + "src": "19228:128:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "19246:11:0", + "subExpression": { + "id": 1630, + "name": "_isEntered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1490, + "src": "19247:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523134", + "id": 1632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19259:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7166811bd58291ee940aacae52db5483bb7d8557dc28b5f9feb6c2f0a65f548e", + "typeString": "literal_string \"R14\"" + }, + "value": "R14" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7166811bd58291ee940aacae52db5483bb7d8557dc28b5f9feb6c2f0a65f548e", + "typeString": "literal_string \"R14\"" + } + ], + "id": 1629, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19238:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19238:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1634, + "nodeType": "ExpressionStatement", + "src": "19238:27:0" + }, + { + "expression": { + "id": 1637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1635, + "name": "_isEntered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1490, + "src": "19293:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 1636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19306:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "19293:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1638, + "nodeType": "ExpressionStatement", + "src": "19293:17:0" + }, + { + "id": 1639, + "nodeType": "PlaceholderStatement", + "src": "19320:1:0" + }, + { + "expression": { + "id": 1642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 1640, + "name": "_isEntered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1490, + "src": "19331:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 1641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19344:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "19331:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1643, + "nodeType": "ExpressionStatement", + "src": "19331:18:0" + } + ] + }, + "id": 1645, + "name": "nonReentrant", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1628, + "nodeType": "ParameterList", + "parameters": [], + "src": "19225:2:0" + }, + "src": "19204:152:0", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 36 + ], + "body": { + "id": 1664, + "nodeType": "Block", + "src": "19464:78:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1656, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19484:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "19484:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1658, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1647, + "src": "19496:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1659, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1649, + "src": "19507:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1655, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3413, + "src": "19474:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19474:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1661, + "nodeType": "ExpressionStatement", + "src": "19474:40:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 1662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19531:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1654, + "id": 1663, + "nodeType": "Return", + "src": "19524:11:0" + } + ] + }, + "functionSelector": "a9059cbb", + "id": 1665, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1651, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "19432:8:0" + }, + "parameters": { + "id": 1650, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1647, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 1665, + "src": "19380:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1646, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19380:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1649, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1665, + "src": "19399:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19399:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19379:35:0" + }, + "returnParameters": { + "id": 1654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1653, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1665, + "src": "19454:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1652, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19454:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19453:6:0" + }, + "scope": 4770, + "src": "19362:180:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 27 + ], + "body": { + "id": 1684, + "nodeType": "Block", + "src": "19647:75:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1676, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19666:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "19666:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1678, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1667, + "src": "19678:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1679, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1669, + "src": "19687:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1675, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3564, + "src": "19657:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19657:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1681, + "nodeType": "ExpressionStatement", + "src": "19657:37:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 1682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19711:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1674, + "id": 1683, + "nodeType": "Return", + "src": "19704:11:0" + } + ] + }, + "functionSelector": "095ea7b3", + "id": 1685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1671, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "19615:8:0" + }, + "parameters": { + "id": 1670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1667, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19565:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1666, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19565:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1669, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19582:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19582:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19564:33:0" + }, + "returnParameters": { + "id": 1674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1673, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "19637:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1672, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19637:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19636:6:0" + }, + "scope": 4770, + "src": "19548:174:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 47 + ], + "body": { + "id": 1730, + "nodeType": "Block", + "src": "19864:289:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1698, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "19884:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1699, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1689, + "src": "19892:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1700, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "19903:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1697, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3413, + "src": "19874:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19874:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1702, + "nodeType": "ExpressionStatement", + "src": "19874:36:0" + }, + { + "assignments": [ + 1704 + ], + "declarations": [ + { + "constant": false, + "id": 1704, + "mutability": "mutable", + "name": "currentAllowance", + "nodeType": "VariableDeclaration", + "scope": 1730, + "src": "19920:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19920:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 1711, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 1705, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "19947:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 1707, + "indexExpression": { + "id": 1706, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "19959:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19947:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1710, + "indexExpression": { + "expression": { + "id": 1708, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "19967:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "19967:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19947:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19920:58:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1713, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1704, + "src": "19996:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 1714, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "20016:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19996:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523135", + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20024:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_92eb1283615753eb74f5e235266f62e5186d064b53e6ec7296270b68185af607", + "typeString": "literal_string \"R15\"" + }, + "value": "R15" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_92eb1283615753eb74f5e235266f62e5186d064b53e6ec7296270b68185af607", + "typeString": "literal_string \"R15\"" + } + ], + "id": 1712, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "19988:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "19988:42:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1718, + "nodeType": "ExpressionStatement", + "src": "19988:42:0" + }, + { + "expression": { + "arguments": [ + { + "id": 1720, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1687, + "src": "20079:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 1721, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20087:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20087:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1723, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1704, + "src": "20099:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1724, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1691, + "src": "20118:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20099:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1719, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3564, + "src": "20070:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20070:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1727, + "nodeType": "ExpressionStatement", + "src": "20070:55:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20142:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1696, + "id": 1729, + "nodeType": "Return", + "src": "20135:11:0" + } + ] + }, + "functionSelector": "23b872dd", + "id": 1731, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1693, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "19840:8:0" + }, + "parameters": { + "id": 1692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1687, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1731, + "src": "19759:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1686, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19759:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1689, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 1731, + "src": "19783:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1688, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19783:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1691, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1731, + "src": "19810:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19810:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19749:81:0" + }, + "returnParameters": { + "id": 1696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1695, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1731, + "src": "19858:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1694, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19858:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19857:6:0" + }, + "scope": 4770, + "src": "19728:425:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1331 + ], + "body": { + "id": 1877, + "nodeType": "Block", + "src": "20284:1459:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1742, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20299:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20299:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1741, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1418, + "src": "20294:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20294:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1745, + "nodeType": "ExpressionStatement", + "src": "20294:16:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1747, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "20328:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "20328:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 1749, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "20347:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 1276, + "src": "20347:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20328:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1746, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "20320:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20320:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1753, + "nodeType": "ExpressionStatement", + "src": "20320:49:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1758, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20424:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20424:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 1762, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "20456:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20448:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20448:7:0", + "typeDescriptions": {} + } + }, + "id": 1763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20448:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "id": 1764, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "20475:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "20475:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 1755, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "20386:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1754, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "20379:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20379:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 1757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 457, + "src": "20379:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20379:133:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1767, + "nodeType": "ExpressionStatement", + "src": "20379:133:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1772, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20568:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20568:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 1776, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "20600:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 1775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20592:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1774, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20592:7:0", + "typeDescriptions": {} + } + }, + "id": 1777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20592:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "id": 1778, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "20619:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "20619:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 1769, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "20530:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1768, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "20523:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20523:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 1771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 457, + "src": "20523:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20523:133:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1781, + "nodeType": "ExpressionStatement", + "src": "20523:133:0" + }, + { + "assignments": [ + 1783, + 1785, + 1787, + 1789 + ], + "declarations": [ + { + "constant": false, + "id": 1783, + "mutability": "mutable", + "name": "inAmount0", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "20677:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1782, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1785, + "mutability": "mutable", + "name": "inAmount1", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "20704:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1784, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20704:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1787, + "mutability": "mutable", + "name": "liquidityBefore", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "20731:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1786, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "20731:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1789, + "mutability": "mutable", + "name": "liquiditySum", + "nodeType": "VariableDeclaration", + "scope": 1877, + "src": "20764:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1788, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "20764:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 1793, + "initialValue": { + "arguments": [ + { + "id": 1791, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "20811:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + ], + "id": 1790, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "20797:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarAddParams_$1277_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarAddParams memory) returns (uint256,uint256,uint128,uint128)" + } + }, + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20797:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20667:157:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 1796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1794, + "name": "liquidityBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1787, + "src": "20839:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 1795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20858:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "20839:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1815, + "nodeType": "Block", + "src": "20923:150:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1805, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20960:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20960:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 1809, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1789, + "src": "21004:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 1810, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "21018:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1811, + "name": "liquidityBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1787, + "src": "21032:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 1807, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "20988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "20988:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20988:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1804, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3459, + "src": "20937:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20937:125:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1814, + "nodeType": "ExpressionStatement", + "src": "20937:125:0" + } + ] + }, + "id": 1816, + "nodeType": "IfStatement", + "src": "20835:238:0", + "trueBody": { + "id": 1803, + "nodeType": "Block", + "src": "20861:56:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1798, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20881:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20881:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 1800, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1789, + "src": "20893:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 1797, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3459, + "src": "20875:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "20875:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1802, + "nodeType": "ExpressionStatement", + "src": "20875:31:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1818, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1783, + "src": "21090:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 1819, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "21103:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1270, + "src": "21103:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21090:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523136", + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21128:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + }, + "value": "R16" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + } + ], + "id": 1817, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21082:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21082:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1824, + "nodeType": "ExpressionStatement", + "src": "21082:52:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1826, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "21176:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 1827, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "21189:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1272, + "src": "21189:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21176:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523137", + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21214:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + }, + "value": "R17" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + } + ], + "id": 1825, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21168:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21168:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1832, + "nodeType": "ExpressionStatement", + "src": "21168:52:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1833, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "21259:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "21259:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1835, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1783, + "src": "21289:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21259:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1850, + "nodeType": "IfStatement", + "src": "21255:196:0", + "trueBody": { + "id": 1849, + "nodeType": "Block", + "src": "21300:151:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1841, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21359:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "21359:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1843, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "21387:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "21387:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1845, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1783, + "src": "21417:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21387:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 1838, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "21321:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1837, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "21314:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21314:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "21314:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21314:126:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "21314:126:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1851, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "21464:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "21464:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 1853, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "21494:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21464:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1868, + "nodeType": "IfStatement", + "src": "21460:196:0", + "trueBody": { + "id": 1867, + "nodeType": "Block", + "src": "21505:151:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1859, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21564:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "21564:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1861, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1733, + "src": "21592:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "21592:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 1863, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "21622:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21592:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 1856, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "21526:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1855, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "21519:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21519:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "21519:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21519:126:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1866, + "nodeType": "ExpressionStatement", + "src": "21519:126:0" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 1870, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "21685:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1871, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "21693:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1872, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1789, + "src": "21701:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 1873, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1783, + "src": "21715:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1874, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1785, + "src": "21726:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1869, + "name": "AddedLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "21670:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint128,uint256,uint256)" + } + }, + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21670:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1876, + "nodeType": "EmitStatement", + "src": "21665:71:0" + } + ] + }, + "functionSelector": "33bc230a", + "id": 1878, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 1737, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20268:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20268:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 1739, + "modifierName": { + "id": 1736, + "name": "notLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1434, + "src": "20258:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "20258:21:0" + } + ], + "name": "addLiquidityForUniV3", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1735, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "20245:8:0" + }, + "parameters": { + "id": 1734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1733, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 1878, + "src": "20189:37:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + }, + "typeName": { + "id": 1732, + "name": "CellarAddParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1277, + "src": "20189:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + } + }, + "visibility": "internal" + } + ], + "src": "20188:39:0" + }, + "returnParameters": { + "id": 1740, + "nodeType": "ParameterList", + "parameters": [], + "src": "20284:0:0" + }, + "scope": 4770, + "src": "20159:1584:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1336 + ], + "body": { + "id": 2165, + "nodeType": "Block", + "src": "21906:2715:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1891, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21921:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "21921:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1890, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1418, + "src": "21916:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21916:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1894, + "nodeType": "ExpressionStatement", + "src": "21916:16:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1896, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "21950:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "21950:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 1898, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "21969:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 1276, + "src": "21969:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21950:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1895, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "21942:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "21942:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1902, + "nodeType": "ExpressionStatement", + "src": "21942:49:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1903, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "22005:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1904, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "22015:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "22005:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2020, + "nodeType": "Block", + "src": "22641:656:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1961, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "22663:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1962, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "22673:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "22663:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523139", + "id": 1964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22679:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3da18c702e979fad964ca14d268cba446c19015548baffb3f3ae18ac64f1da2c", + "typeString": "literal_string \"R19\"" + }, + "value": "R19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3da18c702e979fad964ca14d268cba446c19015548baffb3f3ae18ac64f1da2c", + "typeString": "literal_string \"R19\"" + } + ], + "id": 1960, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "22655:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22655:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1966, + "nodeType": "ExpressionStatement", + "src": "22655:30:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1967, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22719:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22719:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 1969, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22731:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "22731:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22719:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1995, + "nodeType": "Block", + "src": "22906:147:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1987, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22953:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22953:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 1989, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22966:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "22966:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22953:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523138", + "id": 1992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23015:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_987165af1bd7cdeea74e381f0b6cf1435fa3a690007d65767176649c7a94035e", + "typeString": "literal_string \"R18\"" + }, + "value": "R18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_987165af1bd7cdeea74e381f0b6cf1435fa3a690007d65767176649c7a94035e", + "typeString": "literal_string \"R18\"" + } + ], + "id": 1986, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "22924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22924:114:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1994, + "nodeType": "ExpressionStatement", + "src": "22924:114:0" + } + ] + }, + "id": 1996, + "nodeType": "IfStatement", + "src": "22715:338:0", + "trueBody": { + "id": 1985, + "nodeType": "Block", + "src": "22760:140:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1978, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22828:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22828:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 1980, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22840:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "22840:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22828:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 1974, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22786:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "22786:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22778:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 1972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22778:8:0", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 1976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22778:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "22778:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22778:107:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1984, + "nodeType": "ExpressionStatement", + "src": "22778:107:0" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1998, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "23072:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1997, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "23066:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$1396_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23066:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$1396", + "typeString": "contract IWETH" + } + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1390, + "src": "23066:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "expression": { + "id": 2001, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "23093:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "23093:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "23066:55:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 2004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23066:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2005, + "nodeType": "ExpressionStatement", + "src": "23066:57:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2010, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23186:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23186:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 2014, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "23222:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23214:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2012, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23214:7:0", + "typeDescriptions": {} + } + }, + "id": 2015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23214:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "id": 2016, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "23245:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 2017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "23245:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2007, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "23144:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2006, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "23137:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23137:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 457, + "src": "23137:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 2018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23137:149:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2019, + "nodeType": "ExpressionStatement", + "src": "23137:149:0" + } + ] + }, + "id": 2021, + "nodeType": "IfStatement", + "src": "22001:1296:0", + "trueBody": { + "id": 1959, + "nodeType": "Block", + "src": "22021:614:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1906, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22039:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22039:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 1908, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22051:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "22051:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22039:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1934, + "nodeType": "Block", + "src": "22226:165:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1926, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22273:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22273:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 1928, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22286:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "22286:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22273:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523138", + "id": 1931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22335:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_987165af1bd7cdeea74e381f0b6cf1435fa3a690007d65767176649c7a94035e", + "typeString": "literal_string \"R18\"" + }, + "value": "R18" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_987165af1bd7cdeea74e381f0b6cf1435fa3a690007d65767176649c7a94035e", + "typeString": "literal_string \"R18\"" + } + ], + "id": 1925, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "22244:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22244:132:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1933, + "nodeType": "ExpressionStatement", + "src": "22244:132:0" + } + ] + }, + "id": 1935, + "nodeType": "IfStatement", + "src": "22035:356:0", + "trueBody": { + "id": 1924, + "nodeType": "Block", + "src": "22080:140:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1917, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22148:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "src": "22148:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 1919, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22160:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "22160:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22148:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 1913, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22106:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "22106:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22098:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 1911, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22098:8:0", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22098:19:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "22098:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22098:107:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1923, + "nodeType": "ExpressionStatement", + "src": "22098:107:0" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 1937, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "22410:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1936, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "22404:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$1396_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22404:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$1396", + "typeString": "contract IWETH" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1390, + "src": "22404:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$", + "typeString": "function () payable external" + } + }, + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "expression": { + "id": 1940, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22431:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "22431:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "22404:55:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$__$returns$__$value", + "typeString": "function () payable external" + } + }, + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22404:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1944, + "nodeType": "ExpressionStatement", + "src": "22404:57:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 1949, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "22524:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "22524:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 1953, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "22560:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 1952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22552:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1951, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "22552:7:0", + "typeDescriptions": {} + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22552:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "id": 1955, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "22583:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 1956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "22583:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 1946, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "22482:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1945, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "22475:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22475:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 457, + "src": "22475:31:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "22475:149:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1958, + "nodeType": "ExpressionStatement", + "src": "22475:149:0" + } + ] + } + }, + { + "assignments": [ + 2023, + 2025, + 2027, + 2029 + ], + "declarations": [ + { + "constant": false, + "id": 2023, + "mutability": "mutable", + "name": "inAmount0", + "nodeType": "VariableDeclaration", + "scope": 2165, + "src": "23317:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2025, + "mutability": "mutable", + "name": "inAmount1", + "nodeType": "VariableDeclaration", + "scope": 2165, + "src": "23344:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23344:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2027, + "mutability": "mutable", + "name": "liquidityBefore", + "nodeType": "VariableDeclaration", + "scope": 2165, + "src": "23371:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 2026, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "23371:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2029, + "mutability": "mutable", + "name": "liquiditySum", + "nodeType": "VariableDeclaration", + "scope": 2165, + "src": "23404:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 2028, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "23404:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 2033, + "initialValue": { + "arguments": [ + { + "id": 2031, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "23451:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + ], + "id": 2030, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "23437:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarAddParams_$1277_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarAddParams memory) returns (uint256,uint256,uint128,uint128)" + } + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23437:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23307:157:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 2036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2034, + "name": "liquidityBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2027, + "src": "23479:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23498:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23479:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2055, + "nodeType": "Block", + "src": "23563:150:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2045, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23600:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23600:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "arguments": [ + { + "id": 2049, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "23644:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 2050, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "23658:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2051, + "name": "liquidityBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2027, + "src": "23672:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 2047, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "23628:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "23628:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23628:60:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2044, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3459, + "src": "23577:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23577:125:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2054, + "nodeType": "ExpressionStatement", + "src": "23577:125:0" + } + ] + }, + "id": 2056, + "nodeType": "IfStatement", + "src": "23475:238:0", + "trueBody": { + "id": 2043, + "nodeType": "Block", + "src": "23501:56:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2038, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "23521:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "23521:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2040, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "23533:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "id": 2037, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3459, + "src": "23515:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23515:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2042, + "nodeType": "ExpressionStatement", + "src": "23515:31:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2058, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2023, + "src": "23731:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2059, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "23744:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 2060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1270, + "src": "23744:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23731:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523136", + "id": 2062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23769:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + }, + "value": "R16" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + } + ], + "id": 2057, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "23723:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23723:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2064, + "nodeType": "ExpressionStatement", + "src": "23723:52:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2066, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2025, + "src": "23793:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2067, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "23806:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 2068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1272, + "src": "23806:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23793:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523137", + "id": 2070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23831:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + }, + "value": "R17" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + } + ], + "id": 2065, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "23785:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "23785:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2072, + "nodeType": "ExpressionStatement", + "src": "23785:52:0" + }, + { + "assignments": [ + 2074 + ], + "declarations": [ + { + "constant": false, + "id": 2074, + "mutability": "mutable", + "name": "retAmount0", + "nodeType": "VariableDeclaration", + "scope": 2165, + "src": "23848:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23848:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2079, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2075, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "23869:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 2076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "23869:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2077, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2023, + "src": "23899:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23869:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23848:60:0" + }, + { + "assignments": [ + 2081 + ], + "declarations": [ + { + "constant": false, + "id": 2081, + "mutability": "mutable", + "name": "retAmount1", + "nodeType": "VariableDeclaration", + "scope": 2165, + "src": "23918:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2080, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23918:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2086, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2082, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "23939:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams calldata" + } + }, + "id": 2083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "23939:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 2084, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2025, + "src": "23969:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23939:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23918:60:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2087, + "name": "retAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "23993:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24006:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "23993:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2121, + "nodeType": "IfStatement", + "src": "23989:268:0", + "trueBody": { + "id": 2120, + "nodeType": "Block", + "src": "24009:248:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2090, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "24027:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2091, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "24037:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24027:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2118, + "nodeType": "Block", + "src": "24163:84:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2113, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24209:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24209:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2115, + "name": "retAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "24221:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2110, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "24188:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2109, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "24181:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24181:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "24181:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24181:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2117, + "nodeType": "ExpressionStatement", + "src": "24181:51:0" + } + ] + }, + "id": 2119, + "nodeType": "IfStatement", + "src": "24023:224:0", + "trueBody": { + "id": 2108, + "nodeType": "Block", + "src": "24043:114:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2097, + "name": "retAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "24082:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2094, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "24067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2093, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "24061:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$1396_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24061:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$1396", + "typeString": "contract IWETH" + } + }, + "id": 2096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 1395, + "src": "24061:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24061:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2099, + "nodeType": "ExpressionStatement", + "src": "24061:32:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2105, + "name": "retAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2074, + "src": "24131:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2100, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24111:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24111:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "24111:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24111:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2107, + "nodeType": "ExpressionStatement", + "src": "24111:31:0" + } + ] + } + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2122, + "name": "retAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "24270:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24283:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "24270:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2156, + "nodeType": "IfStatement", + "src": "24266:268:0", + "trueBody": { + "id": 2155, + "nodeType": "Block", + "src": "24286:248:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2125, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "24304:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2126, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "24314:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24304:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2153, + "nodeType": "Block", + "src": "24440:84:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2148, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24486:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24486:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2150, + "name": "retAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "24498:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2145, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "24465:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2144, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "24458:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24458:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "24458:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24458:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2152, + "nodeType": "ExpressionStatement", + "src": "24458:51:0" + } + ] + }, + "id": 2154, + "nodeType": "IfStatement", + "src": "24300:224:0", + "trueBody": { + "id": 2143, + "nodeType": "Block", + "src": "24320:114:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2132, + "name": "retAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "24359:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2129, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "24344:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2128, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "24338:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$1396_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24338:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$1396", + "typeString": "contract IWETH" + } + }, + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 1395, + "src": "24338:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24338:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2134, + "nodeType": "ExpressionStatement", + "src": "24338:32:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2140, + "name": "retAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "24408:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2135, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24388:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24388:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "24388:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24388:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2142, + "nodeType": "ExpressionStatement", + "src": "24388:31:0" + } + ] + } + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 2158, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "24563:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2159, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "24571:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2160, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "24579:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 2161, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2023, + "src": "24593:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2162, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2025, + "src": "24604:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2157, + "name": "AddedLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1314, + "src": "24548:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint128,uint256,uint256)" + } + }, + "id": 2163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24548:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2164, + "nodeType": "EmitStatement", + "src": "24543:71:0" + } + ] + }, + "functionSelector": "70e032b1", + "id": 2166, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1884, + "modifierName": { + "id": 1883, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "21863:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "21863:12:0" + }, + { + "arguments": [ + { + "expression": { + "id": 1886, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "21890:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "21890:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 1888, + "modifierName": { + "id": 1885, + "name": "notLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1434, + "src": "21880:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "21880:21:0" + } + ], + "name": "addLiquidityEthForUniV3", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1882, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "21850:8:0" + }, + "parameters": { + "id": 1881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1880, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 2166, + "src": "21782:37:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + }, + "typeName": { + "id": 1879, + "name": "CellarAddParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1277, + "src": "21782:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + } + }, + "visibility": "internal" + } + ], + "src": "21781:39:0" + }, + "returnParameters": { + "id": 1889, + "nodeType": "ParameterList", + "parameters": [], + "src": "21906:0:0" + }, + "scope": 4770, + "src": "21749:2872:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1346 + ], + "body": { + "id": 2293, + "nodeType": "Block", + "src": "24773:954:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2179, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24788:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24788:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2178, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1418, + "src": "24783:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24783:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2182, + "nodeType": "ExpressionStatement", + "src": "24783:16:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2184, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "24817:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "24817:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 2186, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "24836:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 1287, + "src": "24836:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24817:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2183, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "24809:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24809:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2190, + "nodeType": "ExpressionStatement", + "src": "24809:49:0" + }, + { + "assignments": [ + 2192, + 2194, + 2196 + ], + "declarations": [ + { + "constant": false, + "id": 2192, + "mutability": "mutable", + "name": "outAmount0", + "nodeType": "VariableDeclaration", + "scope": 2293, + "src": "24869:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24869:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2194, + "mutability": "mutable", + "name": "outAmount1", + "nodeType": "VariableDeclaration", + "scope": 2293, + "src": "24889:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24889:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2196, + "mutability": "mutable", + "name": "liquiditySum", + "nodeType": "VariableDeclaration", + "scope": 2293, + "src": "24909:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 2195, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "24909:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 2200, + "initialValue": { + "arguments": [ + { + "id": 2198, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "24958:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + ], + "id": 2197, + "name": "_removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4755, + "src": "24941:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarRemoveParams_$1288_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarRemoveParams memory) returns (uint256,uint256,uint128)" + } + }, + "id": 2199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24941:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24868:103:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2202, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24987:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24987:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "id": 2204, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "24999:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1279, + "src": "24999:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2201, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3520, + "src": "24981:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "24981:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2207, + "nodeType": "ExpressionStatement", + "src": "24981:43:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2209, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2192, + "src": "25043:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2210, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "25057:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1281, + "src": "25057:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25043:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523136", + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25082:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + }, + "value": "R16" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + } + ], + "id": 2208, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25035:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25035:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2215, + "nodeType": "ExpressionStatement", + "src": "25035:53:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2217, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "25106:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2218, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2168, + "src": "25120:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1283, + "src": "25120:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25106:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523137", + "id": 2221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25145:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + }, + "value": "R17" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + } + ], + "id": 2216, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25098:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25098:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2223, + "nodeType": "ExpressionStatement", + "src": "25098:53:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2224, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "25166:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2225, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "25176:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25166:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 2283, + "nodeType": "Block", + "src": "25355:211:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2253, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "25377:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2254, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "25387:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "25377:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523139", + "id": 2256, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25393:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3da18c702e979fad964ca14d268cba446c19015548baffb3f3ae18ac64f1da2c", + "typeString": "literal_string \"R19\"" + }, + "value": "R19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3da18c702e979fad964ca14d268cba446c19015548baffb3f3ae18ac64f1da2c", + "typeString": "literal_string \"R19\"" + } + ], + "id": 2252, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25369:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25369:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2258, + "nodeType": "ExpressionStatement", + "src": "25369:30:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2263, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "25434:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2260, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "25419:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2259, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "25413:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$1396_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25413:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$1396", + "typeString": "contract IWETH" + } + }, + "id": 2262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 1395, + "src": "25413:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25413:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2265, + "nodeType": "ExpressionStatement", + "src": "25413:32:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2271, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "25479:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2266, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25459:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "25459:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "25459:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25459:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2273, + "nodeType": "ExpressionStatement", + "src": "25459:31:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2278, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25532:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "25532:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2280, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2192, + "src": "25544:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2275, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "25511:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2274, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "25504:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25504:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "25504:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25504:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2282, + "nodeType": "ExpressionStatement", + "src": "25504:51:0" + } + ] + }, + "id": 2284, + "nodeType": "IfStatement", + "src": "25162:404:0", + "trueBody": { + "id": 2251, + "nodeType": "Block", + "src": "25182:167:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2231, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2192, + "src": "25217:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2228, + "name": "WETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "25202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2227, + "name": "IWETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1396, + "src": "25196:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IWETH_$1396_$", + "typeString": "type(contract IWETH)" + } + }, + "id": 2229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25196:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IWETH_$1396", + "typeString": "contract IWETH" + } + }, + "id": 2230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 1395, + "src": "25196:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25196:32:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2233, + "nodeType": "ExpressionStatement", + "src": "25196:32:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2239, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2192, + "src": "25262:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2234, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25242:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "25242:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 2238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "25242:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25242:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2241, + "nodeType": "ExpressionStatement", + "src": "25242:31:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2246, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25315:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "25315:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2248, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "25327:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2243, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "25294:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2242, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "25287:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25287:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "25287:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25287:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2250, + "nodeType": "ExpressionStatement", + "src": "25287:51:0" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 2286, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "25610:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2287, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "25630:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2288, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "25650:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 2289, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2192, + "src": "25676:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2290, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "25700:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2285, + "name": "RemovedLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1326, + "src": "25580:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint128,uint256,uint256)" + } + }, + "id": 2291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25580:140:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2292, + "nodeType": "EmitStatement", + "src": "25575:145:0" + } + ] + }, + "functionSelector": "a2d96f5f", + "id": 2294, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2172, + "modifierName": { + "id": 2171, + "name": "nonReentrant", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1645, + "src": "24738:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "24738:12:0" + }, + { + "arguments": [ + { + "expression": { + "id": 2174, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "24761:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "24761:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 2176, + "modifierName": { + "id": 2173, + "name": "notLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1434, + "src": "24751:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "24751:21:0" + } + ], + "name": "removeLiquidityEthFromUniV3", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2170, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "24729:8:0" + }, + "parameters": { + "id": 2169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2168, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 2294, + "src": "24673:40:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + }, + "typeName": { + "id": 2167, + "name": "CellarRemoveParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1288, + "src": "24673:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + } + }, + "visibility": "internal" + } + ], + "src": "24663:56:0" + }, + "returnParameters": { + "id": 2177, + "nodeType": "ParameterList", + "parameters": [], + "src": "24773:0:0" + }, + "scope": 4770, + "src": "24627:1100:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1341 + ], + "body": { + "id": 2376, + "nodeType": "Block", + "src": "25865:663:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2305, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25880:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "25880:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 2304, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1418, + "src": "25875:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25875:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2308, + "nodeType": "ExpressionStatement", + "src": "25875:16:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2310, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "25909:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 2311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "25909:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 2312, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "25928:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 1287, + "src": "25928:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25909:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2309, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "25901:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "25901:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2316, + "nodeType": "ExpressionStatement", + "src": "25901:49:0" + }, + { + "assignments": [ + 2318, + 2320, + 2322 + ], + "declarations": [ + { + "constant": false, + "id": 2318, + "mutability": "mutable", + "name": "outAmount0", + "nodeType": "VariableDeclaration", + "scope": 2376, + "src": "25961:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25961:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2320, + "mutability": "mutable", + "name": "outAmount1", + "nodeType": "VariableDeclaration", + "scope": 2376, + "src": "25981:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25981:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2322, + "mutability": "mutable", + "name": "liquiditySum", + "nodeType": "VariableDeclaration", + "scope": 2376, + "src": "26001:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 2321, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "26001:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 2326, + "initialValue": { + "arguments": [ + { + "id": 2324, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "26050:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + ], + "id": 2323, + "name": "_removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4755, + "src": "26033:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarRemoveParams_$1288_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarRemoveParams memory) returns (uint256,uint256,uint128)" + } + }, + "id": 2325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26033:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25960:103:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2328, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "26079:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "26079:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "id": 2330, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "26091:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1279, + "src": "26091:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2327, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3520, + "src": "26073:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26073:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2333, + "nodeType": "ExpressionStatement", + "src": "26073:43:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2335, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2318, + "src": "26135:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2336, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "26149:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1281, + "src": "26149:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26135:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523136", + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26174:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + }, + "value": "R16" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_431de14649a4252fe0d0166e84fe709adc119eee9b0c5d69fff9adb6e8841710", + "typeString": "literal_string \"R16\"" + } + ], + "id": 2334, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "26127:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26127:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2341, + "nodeType": "ExpressionStatement", + "src": "26127:53:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2343, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2320, + "src": "26198:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "id": 2344, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "26212:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams calldata" + } + }, + "id": 2345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1283, + "src": "26212:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26198:37:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523137", + "id": 2347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26237:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + }, + "value": "R17" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d1f525a57917acf7ef76b3a31a9ec51f2fe33951f21228462b473525c9967e6b", + "typeString": "literal_string \"R17\"" + } + ], + "id": 2342, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "26190:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26190:53:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2349, + "nodeType": "ExpressionStatement", + "src": "26190:53:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2354, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "26282:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "26282:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2356, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2318, + "src": "26294:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2351, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "26261:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2350, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "26254:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26254:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "26254:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26254:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2358, + "nodeType": "ExpressionStatement", + "src": "26254:51:0" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 2363, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "26343:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "26343:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 2365, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2320, + "src": "26355:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2360, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "26322:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2359, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "26315:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26315:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "26315:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26315:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2367, + "nodeType": "ExpressionStatement", + "src": "26315:51:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2369, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "26411:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2370, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "26431:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2371, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "26451:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 2372, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2318, + "src": "26477:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2373, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2320, + "src": "26501:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2368, + "name": "RemovedLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1326, + "src": "26381:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint128,uint256,uint256)" + } + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26381:140:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2375, + "nodeType": "EmitStatement", + "src": "26376:145:0" + } + ] + }, + "functionSelector": "276cd920", + "id": 2377, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 2300, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25849:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "25849:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 2302, + "modifierName": { + "id": 2299, + "name": "notLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1434, + "src": "25839:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "25839:21:0" + } + ], + "name": "removeLiquidityFromUniV3", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2298, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "25826:8:0" + }, + "parameters": { + "id": 2297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2296, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 2377, + "src": "25767:40:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_calldata_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + }, + "typeName": { + "id": 2295, + "name": "CellarRemoveParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1288, + "src": "25767:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + } + }, + "visibility": "internal" + } + ], + "src": "25766:42:0" + }, + "returnParameters": { + "id": 2303, + "nodeType": "ParameterList", + "parameters": [], + "src": "25865:0:0" + }, + "scope": 4770, + "src": "25733:795:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1349 + ], + "body": { + "id": 2788, + "nodeType": "Block", + "src": "26608:4154:0", + "statements": [ + { + "assignments": [ + 2390 + ], + "declarations": [ + { + "constant": false, + "id": 2390, + "mutability": "mutable", + "name": "_cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "26618:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 2388, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "26618:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 2389, + "nodeType": "ArrayTypeName", + "src": "26618:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + } + ], + "id": 2392, + "initialValue": { + "id": 2391, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "26660:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26618:56:0" + }, + { + "assignments": [ + 2394 + ], + "declarations": [ + { + "constant": false, + "id": 2394, + "mutability": "mutable", + "name": "weightSum", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "26684:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2393, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26684:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2395, + "nodeType": "VariableDeclarationStatement", + "src": "26684:17:0" + }, + { + "assignments": [ + 2397 + ], + "declarations": [ + { + "constant": false, + "id": 2397, + "mutability": "mutable", + "name": "balance0", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "26711:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26711:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2398, + "nodeType": "VariableDeclarationStatement", + "src": "26711:16:0" + }, + { + "assignments": [ + 2400 + ], + "declarations": [ + { + "constant": false, + "id": 2400, + "mutability": "mutable", + "name": "balance1", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "26737:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26737:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2401, + "nodeType": "VariableDeclarationStatement", + "src": "26737:16:0" + }, + { + "body": { + "id": 2469, + "nodeType": "Block", + "src": "26828:612:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 2414, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "26850:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2416, + "indexExpression": { + "id": 2415, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "26866:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26850:22:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "26850:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26884:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "26850:35:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523230", + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26887:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d7ddf5c7237b6fcbd18a81e0363800a2edd93e5d7694f12b68175c8be112382d", + "typeString": "literal_string \"R20\"" + }, + "value": "R20" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d7ddf5c7237b6fcbd18a81e0363800a2edd93e5d7694f12b68175c8be112382d", + "typeString": "literal_string \"R20\"" + } + ], + "id": 2413, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "26842:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "26842:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2422, + "nodeType": "ExpressionStatement", + "src": "26842:51:0" + }, + { + "expression": { + "id": 2428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2423, + "name": "weightSum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2394, + "src": "26929:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "baseExpression": { + "id": 2424, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "26942:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2426, + "indexExpression": { + "id": 2425, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "26958:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26942:22:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2427, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "26942:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "26929:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2429, + "nodeType": "ExpressionStatement", + "src": "26929:42:0" + }, + { + "assignments": [ + 2431, + 2433 + ], + "declarations": [ + { + "constant": false, + "id": 2431, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 2469, + "src": "26986:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2430, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26986:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2433, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 2469, + "src": "27003:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2432, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27003:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2460, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 2440, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "27180:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2442, + "indexExpression": { + "id": 2441, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "27196:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27180:22:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "27180:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + { + "arguments": [ + { + "id": 2446, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "27243:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27235:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27235:7:0", + "typeDescriptions": {} + } + }, + "id": 2447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27235:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27279:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 2449, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "27279:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + } + ], + "id": 2448, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "27274:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27274:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint128", + "typeString": "type(uint128)" + } + }, + "id": 2452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "27274:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27322:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 2454, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "27322:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + } + ], + "id": 2453, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "27317:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27317:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint128", + "typeString": "type(uint128)" + } + }, + "id": 2457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "27317:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 2438, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "27115:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "CollectParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 125, + "src": "27115:41:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CollectParams_$125_storage_ptr_$", + "typeString": "type(struct INonfungiblePositionManager.CollectParams storage pointer)" + } + }, + "id": 2458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenId", + "recipient", + "amount0Max", + "amount1Max" + ], + "nodeType": "FunctionCall", + "src": "27115:234:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CollectParams_$125_memory_ptr", + "typeString": "struct INonfungiblePositionManager.CollectParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CollectParams_$125_memory_ptr", + "typeString": "struct INonfungiblePositionManager.CollectParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 2435, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "27062:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2434, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "27034:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 2436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27034:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "collect", + "nodeType": "MemberAccess", + "referencedDeclaration": 167, + "src": "27034:63:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_CollectParams_$125_memory_ptr_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (struct INonfungiblePositionManager.CollectParams memory) payable external returns (uint256,uint256)" + } + }, + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27034:329:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26985:378:0" + }, + { + "expression": { + "id": 2463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2461, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "27377:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 2462, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2431, + "src": "27389:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27377:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2464, + "nodeType": "ExpressionStatement", + "src": "27377:19:0" + }, + { + "expression": { + "id": 2467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2465, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "27410:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 2466, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "27422:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27410:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2468, + "nodeType": "ExpressionStatement", + "src": "27410:19:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2406, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "26787:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2407, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2390, + "src": "26795:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "26795:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26787:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2470, + "initializationExpression": { + "assignments": [ + 2403 + ], + "declarations": [ + { + "constant": false, + "id": 2403, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "scope": 2470, + "src": "26768:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26768:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2405, + "initialValue": { + "hexValue": "30", + "id": 2404, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26784:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "26768:17:0" + }, + "loopExpression": { + "expression": { + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "26819:7:0", + "subExpression": { + "id": 2410, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "26819:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2412, + "nodeType": "ExpressionStatement", + "src": "26819:7:0" + }, + "nodeType": "ForStatement", + "src": "26763:677:0" + }, + { + "assignments": [ + 2472 + ], + "declarations": [ + { + "constant": false, + "id": 2472, + "mutability": "mutable", + "name": "fee0", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "27449:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2471, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27449:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2479, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2473, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "27465:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2474, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1493, + "src": "27476:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "27465:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2476, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27464:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2477, + "name": "FEEDOMINATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "27483:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "27464:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27449:46:0" + }, + { + "assignments": [ + 2481 + ], + "declarations": [ + { + "constant": false, + "id": 2481, + "mutability": "mutable", + "name": "fee1", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "27505:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27505:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2488, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2482, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "27521:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2483, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1493, + "src": "27532:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "27521:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2485, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27520:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 2486, + "name": "FEEDOMINATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "27539:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "27520:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27505:46:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2489, + "name": "fee0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2472, + "src": "27565:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2490, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27572:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "27565:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2501, + "nodeType": "IfStatement", + "src": "27561:80:0", + "trueBody": { + "id": 2500, + "nodeType": "Block", + "src": "27575:66:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2496, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "27617:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2497, + "name": "fee0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2472, + "src": "27625:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2493, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "27596:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2492, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "27589:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27589:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "27589:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27589:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2499, + "nodeType": "ExpressionStatement", + "src": "27589:41:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2502, + "name": "fee1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2481, + "src": "27654:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27661:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "27654:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2514, + "nodeType": "IfStatement", + "src": "27650:80:0", + "trueBody": { + "id": 2513, + "nodeType": "Block", + "src": "27664:66:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2509, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "27706:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2510, + "name": "fee1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2481, + "src": "27714:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2506, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "27685:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2505, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "27678:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27678:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "27678:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27678:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2512, + "nodeType": "ExpressionStatement", + "src": "27678:41:0" + } + ] + } + }, + { + "expression": { + "id": 2525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2515, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "27739:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2522, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "27783:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27775:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2520, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27775:7:0", + "typeDescriptions": {} + } + }, + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27775:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 2517, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "27757:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2516, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "27750:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27750:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "27750:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27750:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27739:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2526, + "nodeType": "ExpressionStatement", + "src": "27739:50:0" + }, + { + "expression": { + "id": 2537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2527, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "27799:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2534, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "27843:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27835:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27835:7:0", + "typeDescriptions": {} + } + }, + "id": 2535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27835:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 2529, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "27817:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2528, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "27810:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27810:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "27810:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27810:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27799:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2538, + "nodeType": "ExpressionStatement", + "src": "27799:50:0" + }, + { + "assignments": [ + 2540, + 2542, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 2540, + "mutability": "mutable", + "name": "inAmount0", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "27861:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27861:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2542, + "mutability": "mutable", + "name": "inAmount1", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "27880:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2541, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27880:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null, + null + ], + "id": 2560, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2545, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "27982:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2546, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "28016:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28046:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 2548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28069:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "id": 2551, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "28099:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28091:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2549, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28091:7:0", + "typeDescriptions": {} + } + }, + "id": 2552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28091:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28129:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28129:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2553, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "28124:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28124:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "28124:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2544, + "name": "CellarAddParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "27940:15:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CellarAddParams_$1277_storage_ptr_$", + "typeString": "type(struct ICellarPoolShare.CellarAddParams storage pointer)" + } + }, + "id": 2558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "amount0Desired", + "amount1Desired", + "amount0Min", + "amount1Min", + "recipient", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "27940:212:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + ], + "id": 2543, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "27913:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarAddParams_$1277_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarAddParams memory) returns (uint256,uint256,uint128,uint128)" + } + }, + "id": 2559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "27913:249:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27860:302:0" + }, + { + "expression": { + "id": 2563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2561, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "28172:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 2562, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "28184:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28172:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2564, + "nodeType": "ExpressionStatement", + "src": "28172:21:0" + }, + { + "expression": { + "id": 2567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2565, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "28203:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 2566, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "28215:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28203:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2568, + "nodeType": "ExpressionStatement", + "src": "28203:21:0" + }, + { + "assignments": [ + 2570, + null, + null, + null, + null, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 2570, + "mutability": "mutable", + "name": "sqrtPriceX96", + "nodeType": "VariableDeclaration", + "scope": 2788, + "src": "28235:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 2569, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "28235:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + null, + null, + null, + null, + null, + null + ], + "id": 2583, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2576, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "28368:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2577, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "28392:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2578, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "28416:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "arguments": [ + { + "id": 2573, + "name": "UNISWAPV3FACTORY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "28325:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2572, + "name": "IUniswapV3Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "28307:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Factory_$239_$", + "typeString": "type(contract IUniswapV3Factory)" + } + }, + "id": 2574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28307:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Factory_$239", + "typeString": "contract IUniswapV3Factory" + } + }, + "id": 2575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 238, + "src": "28307:43:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$", + "typeString": "function (address,address,uint24) view external returns (address)" + } + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28307:131:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2571, + "name": "IUniswapV3Pool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 257, + "src": "28279:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Pool_$257_$", + "typeString": "type(contract IUniswapV3Pool)" + } + }, + "id": 2580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28279:169:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Pool_$257", + "typeString": "contract IUniswapV3Pool" + } + }, + "id": 2581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slot0", + "nodeType": "MemberAccess", + "referencedDeclaration": 256, + "src": "28279:184:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28279:186:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28234:231:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2584, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "28479:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2585, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "28490:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28479:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2587, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "28502:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2588, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "28513:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28502:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28479:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2664, + "nodeType": "IfStatement", + "src": "28475:946:0", + "trueBody": { + "id": 2663, + "nodeType": "Block", + "src": "28524:897:0", + "statements": [ + { + "assignments": [ + 2592 + ], + "declarations": [ + { + "constant": false, + "id": 2592, + "mutability": "mutable", + "name": "swapAmount", + "nodeType": "VariableDeclaration", + "scope": 2663, + "src": "28538:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28538:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2618, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2593, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "28560:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2594, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "28571:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28560:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2596, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "28583:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2597, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "28594:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28583:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28560:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2600, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28559:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2605, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "28702:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2606, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2570, + "src": "28733:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "expression": { + "id": 2607, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "28767:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 2608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "28767:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2603, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "28665:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 2604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "28665:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28665:119:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2610, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2570, + "src": "28802:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "expression": { + "id": 2611, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "28832:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "28832:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2601, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "28632:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 2602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "28632:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28632:217:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2614, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "28864:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28632:241:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2616, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28631:243:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28559:315:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28538:336:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2623, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "28915:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2624, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "28927:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2620, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "28895:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2619, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "28888:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28888:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "28888:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28888:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2626, + "nodeType": "ExpressionStatement", + "src": "28888:50:0" + }, + { + "clauses": [ + { + "block": { + "id": 2650, + "nodeType": "Block", + "src": "29345:2:0", + "statements": [] + }, + "errorName": "", + "id": 2651, + "nodeType": "TryCatchClause", + "src": "29345:2:0" + }, + { + "block": { + "id": 2652, + "nodeType": "Block", + "src": "29354:2:0", + "statements": [] + }, + "errorName": "", + "id": 2653, + "nodeType": "TryCatchClause", + "src": "29348:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2633, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "29072:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2634, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "29102:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2635, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "29127:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "arguments": [ + { + "id": 2638, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "29168:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29160:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29160:7:0", + "typeDescriptions": {} + } + }, + "id": 2639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29160:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29202:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2641, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29202:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2640, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "29197:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29197:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "29197:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2645, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "29238:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29280:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 2647, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29314:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 2631, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "29014:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ExactInputSingleParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "29014:34:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ExactInputSingleParams_$219_storage_ptr_$", + "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" + } + }, + "id": 2648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenIn", + "tokenOut", + "fee", + "recipient", + "deadline", + "amountIn", + "amountOutMinimum", + "sqrtPriceLimitX96" + ], + "nodeType": "FunctionCall", + "src": "29014:316:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 2628, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "28968:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2627, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "28956:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 2629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28956:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwapRouter_$227", + "typeString": "contract ISwapRouter" + } + }, + "id": 2630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exactInputSingle", + "nodeType": "MemberAccess", + "referencedDeclaration": 226, + "src": "28956:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_ExactInputSingleParams_$219_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" + } + }, + "id": 2649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "28956:388:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2654, + "nodeType": "TryStatement", + "src": "28952:404:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2659, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "29396:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29408:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "arguments": [ + { + "id": 2656, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "29376:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2655, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "29369:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29369:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "29369:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29369:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2662, + "nodeType": "ExpressionStatement", + "src": "29369:41:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2665, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "29434:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2666, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "29445:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29434:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2668, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "29457:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2669, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "29468:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29457:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29434:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2745, + "nodeType": "IfStatement", + "src": "29430:946:0", + "trueBody": { + "id": 2744, + "nodeType": "Block", + "src": "29479:897:0", + "statements": [ + { + "assignments": [ + 2673 + ], + "declarations": [ + { + "constant": false, + "id": 2673, + "mutability": "mutable", + "name": "swapAmount", + "nodeType": "VariableDeclaration", + "scope": 2744, + "src": "29493:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2672, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29493:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2699, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2674, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "29515:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2675, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "29526:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29515:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2677, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "29538:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 2678, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "29549:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29538:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29515:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2681, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29514:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 2686, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2542, + "src": "29657:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 2687, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "29688:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 2688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "29688:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2689, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2570, + "src": "29726:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "expression": { + "id": 2684, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "29620:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 2685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "29620:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29620:119:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 2691, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "29757:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 2692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "29757:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2693, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2570, + "src": "29791:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "expression": { + "id": 2682, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "29587:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 2683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "29587:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 2694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29587:217:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 2695, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2540, + "src": "29819:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29587:241:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 2697, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "29586:243:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "29514:315:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29493:336:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2704, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "29870:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2705, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2673, + "src": "29882:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 2701, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "29850:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2700, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "29843:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29843:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "29843:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29843:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2707, + "nodeType": "ExpressionStatement", + "src": "29843:50:0" + }, + { + "clauses": [ + { + "block": { + "id": 2731, + "nodeType": "Block", + "src": "30300:2:0", + "statements": [] + }, + "errorName": "", + "id": 2732, + "nodeType": "TryCatchClause", + "src": "30300:2:0" + }, + { + "block": { + "id": 2733, + "nodeType": "Block", + "src": "30309:2:0", + "statements": [] + }, + "errorName": "", + "id": 2734, + "nodeType": "TryCatchClause", + "src": "30303:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [ + { + "id": 2714, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "30027:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2715, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "30057:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2716, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "30082:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "arguments": [ + { + "id": 2719, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "30123:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30115:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2717, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30115:7:0", + "typeDescriptions": {} + } + }, + "id": 2720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30115:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2723, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30157:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2722, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30157:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2721, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "30152:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30152:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "30152:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2726, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2673, + "src": "30193:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30235:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 2728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30269:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 2712, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "29969:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ExactInputSingleParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "29969:34:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ExactInputSingleParams_$219_storage_ptr_$", + "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" + } + }, + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenIn", + "tokenOut", + "fee", + "recipient", + "deadline", + "amountIn", + "amountOutMinimum", + "sqrtPriceLimitX96" + ], + "nodeType": "FunctionCall", + "src": "29969:316:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 2709, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "29923:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2708, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "29911:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 2710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29911:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwapRouter_$227", + "typeString": "contract ISwapRouter" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exactInputSingle", + "nodeType": "MemberAccess", + "referencedDeclaration": 226, + "src": "29911:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_ExactInputSingleParams_$219_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" + } + }, + "id": 2730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "29911:388:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2735, + "nodeType": "TryStatement", + "src": "29907:404:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2740, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "30351:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 2741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30363:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "arguments": [ + { + "id": 2737, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "30331:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2736, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "30324:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30324:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "30324:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 2742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30324:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2743, + "nodeType": "ExpressionStatement", + "src": "30324:41:0" + } + ] + } + }, + { + "expression": { + "id": 2756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2746, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "30386:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2753, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "30430:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30422:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2751, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30422:7:0", + "typeDescriptions": {} + } + }, + "id": 2754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30422:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 2748, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "30404:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2747, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "30397:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30397:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "30397:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30397:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30386:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2757, + "nodeType": "ExpressionStatement", + "src": "30386:50:0" + }, + { + "expression": { + "id": 2768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2758, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "30446:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 2765, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "30490:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30482:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2763, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30482:7:0", + "typeDescriptions": {} + } + }, + "id": 2766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30482:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 2760, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "30464:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2759, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "30457:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30457:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "30457:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30457:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "30446:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2769, + "nodeType": "ExpressionStatement", + "src": "30446:50:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2772, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2397, + "src": "30575:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2773, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "30609:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30639:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 2775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30662:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "id": 2778, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "30692:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30684:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30684:7:0", + "typeDescriptions": {} + } + }, + "id": 2779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30684:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30722:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2781, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30722:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2780, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "30717:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30717:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "30717:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2771, + "name": "CellarAddParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "30533:15:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CellarAddParams_$1277_storage_ptr_$", + "typeString": "type(struct ICellarPoolShare.CellarAddParams storage pointer)" + } + }, + "id": 2785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "amount0Desired", + "amount1Desired", + "amount0Min", + "amount1Min", + "recipient", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "30533:212:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + ], + "id": 2770, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "30506:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarAddParams_$1277_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarAddParams memory) returns (uint256,uint256,uint128,uint128)" + } + }, + "id": 2786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30506:249:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128,uint128)" + } + }, + "id": 2787, + "nodeType": "ExpressionStatement", + "src": "30506:249:0" + } + ] + }, + "functionSelector": "fdb5a03e", + "id": 2789, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2381, + "modifierName": { + "id": 2380, + "name": "onlyValidator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1627, + "src": "26572:13:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "26572:13:0" + }, + { + "arguments": [ + { + "expression": { + "id": 2383, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "26596:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "26596:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 2385, + "modifierName": { + "id": 2382, + "name": "notLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1434, + "src": "26586:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "26586:21:0" + } + ], + "name": "reinvest", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2379, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "26563:8:0" + }, + "parameters": { + "id": 2378, + "nodeType": "ParameterList", + "parameters": [], + "src": "26551:2:0" + }, + "returnParameters": { + "id": 2386, + "nodeType": "ParameterList", + "parameters": [], + "src": "26608:0:0" + }, + "scope": 4770, + "src": "26534:4228:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3207, + "nodeType": "Block", + "src": "30859:4174:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 2800, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30877:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "30877:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2802, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "30891:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "30877:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523231", + "id": 2804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30899:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + }, + "value": "R21" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + } + ], + "id": 2799, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "30869:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "30869:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2806, + "nodeType": "ExpressionStatement", + "src": "30869:36:0" + }, + { + "assignments": [ + 2808 + ], + "declarations": [ + { + "constant": false, + "id": 2808, + "mutability": "mutable", + "name": "removeParams", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "30928:38:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + }, + "typeName": { + "id": 2807, + "name": "CellarRemoveParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1288, + "src": "30928:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + } + }, + "visibility": "internal" + } + ], + "id": 2823, + "initialValue": { + "arguments": [ + { + "id": 2810, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "31019:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31053:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 2812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31076:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "id": 2815, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "31106:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2814, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31098:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2813, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31098:7:0", + "typeDescriptions": {} + } + }, + "id": 2816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31098:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31136:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31136:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2817, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "31131:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31131:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "31131:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2809, + "name": "CellarRemoveParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1288, + "src": "30977:18:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CellarRemoveParams_$1288_storage_ptr_$", + "typeString": "type(struct ICellarPoolShare.CellarRemoveParams storage pointer)" + } + }, + "id": 2822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenAmount", + "amount0Min", + "amount1Min", + "recipient", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "30977:182:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30928:231:0" + }, + { + "expression": { + "arguments": [ + { + "id": 2825, + "name": "removeParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "31186:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams memory" + } + ], + "id": 2824, + "name": "_removeLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4755, + "src": "31169:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarRemoveParams_$1288_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarRemoveParams memory) returns (uint256,uint256,uint128)" + } + }, + "id": 2826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31169:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128)" + } + }, + "id": 2827, + "nodeType": "ExpressionStatement", + "src": "31169:30:0" + }, + { + "assignments": [ + 2831 + ], + "declarations": [ + { + "constant": false, + "id": 2831, + "mutability": "mutable", + "name": "_oldCellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "31209:42:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 2829, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "31209:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 2830, + "nodeType": "ArrayTypeName", + "src": "31209:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + } + ], + "id": 2833, + "initialValue": { + "id": 2832, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "31254:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31209:59:0" + }, + { + "body": { + "id": 2855, + "nodeType": "Block", + "src": "31334:146:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 2849, + "name": "_oldCellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2831, + "src": "31426:18:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2851, + "indexExpression": { + "id": 2850, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2835, + "src": "31445:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31426:21:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2852, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "31426:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + ], + "expression": { + "arguments": [ + { + "id": 2846, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "31376:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2845, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "31348:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 2847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31348:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 2848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "burn", + "nodeType": "MemberAccess", + "referencedDeclaration": 172, + "src": "31348:60:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 2853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31348:121:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2854, + "nodeType": "ExpressionStatement", + "src": "31348:121:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2838, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2835, + "src": "31298:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2839, + "name": "_oldCellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2831, + "src": "31302:18:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "31302:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31298:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2856, + "initializationExpression": { + "assignments": [ + 2835 + ], + "declarations": [ + { + "constant": false, + "id": 2835, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2856, + "src": "31283:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2834, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31283:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2837, + "initialValue": { + "hexValue": "30", + "id": 2836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31295:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "31283:13:0" + }, + "loopExpression": { + "expression": { + "id": 2843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "31329:3:0", + "subExpression": { + "id": 2842, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2835, + "src": "31329:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2844, + "nodeType": "ExpressionStatement", + "src": "31329:3:0" + }, + "nodeType": "ForStatement", + "src": "31278:202:0" + }, + { + "expression": { + "id": 2858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "31489:21:0", + "subExpression": { + "id": 2857, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "31496:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2859, + "nodeType": "ExpressionStatement", + "src": "31489:21:0" + }, + { + "body": { + "id": 2932, + "nodeType": "Block", + "src": "31573:410:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "id": 2880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 2872, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31595:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2874, + "indexExpression": { + "id": 2873, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31611:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31595:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2875, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "31595:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 2876, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31626:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2878, + "indexExpression": { + "id": 2877, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31642:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31626:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2879, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "31626:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "src": "31595:59:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523132", + "id": 2881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31656:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5", + "typeString": "literal_string \"R12\"" + }, + "value": "R12" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5", + "typeString": "literal_string \"R12\"" + } + ], + "id": 2871, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "31587:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31587:75:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2883, + "nodeType": "ExpressionStatement", + "src": "31587:75:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2884, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31680:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31684:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31680:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2903, + "nodeType": "IfStatement", + "src": "31676:124:0", + "trueBody": { + "id": 2902, + "nodeType": "Block", + "src": "31687:113:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "id": 2898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 2888, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31713:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2890, + "indexExpression": { + "id": 2889, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31729:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31713:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2891, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "31713:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 2892, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31745:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2896, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2893, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31761:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31765:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "31761:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31745:22:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2897, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "31745:32:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "src": "31713:64:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523132", + "id": 2899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31779:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5", + "typeString": "literal_string \"R12\"" + }, + "value": "R12" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d5b5cbfef574a6082c36e6cbf21a2cc6be273f07c84eac6ff90869692a3625e5", + "typeString": "literal_string \"R12\"" + } + ], + "id": 2887, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "31705:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31705:80:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2901, + "nodeType": "ExpressionStatement", + "src": "31705:80:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "id": 2910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 2905, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31821:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2907, + "indexExpression": { + "id": 2906, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31837:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31821:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2908, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "31821:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2909, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31849:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31821:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523130", + "id": 2911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31852:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c", + "typeString": "literal_string \"R10\"" + }, + "value": "R10" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_819e511c7663007c1f2bc029b97f7703f0d1ab91439e40b2573efc1833a9cc0c", + "typeString": "literal_string \"R10\"" + } + ], + "id": 2904, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "31813:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31813:45:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2913, + "nodeType": "ExpressionStatement", + "src": "31813:45:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "id": 2920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 2915, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31880:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2917, + "indexExpression": { + "id": 2916, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31896:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31880:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 2918, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "31880:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31910:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "31880:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523131", + "id": 2921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31913:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0", + "typeString": "literal_string \"R11\"" + }, + "value": "R11" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_740a6a5f069ba0dc55a84bc8da9bbce413d31e1722bf8a0d5d0c493e64a426e0", + "typeString": "literal_string \"R11\"" + } + ], + "id": 2914, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "31872:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31872:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2923, + "nodeType": "ExpressionStatement", + "src": "31872:47:0" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 2927, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31953:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2929, + "indexExpression": { + "id": 2928, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31969:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "31953:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + ], + "expression": { + "id": 2924, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "31933:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "id": 2926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "src": "31933:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_CellarTickInfo_$1297_storage_$returns$__$", + "typeString": "function (struct ICellarPoolShare.CellarTickInfo storage ref)" + } + }, + "id": 2930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "31933:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2931, + "nodeType": "ExpressionStatement", + "src": "31933:39:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2864, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31540:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 2865, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2792, + "src": "31544:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 2866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "31544:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "31540:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2933, + "initializationExpression": { + "assignments": [ + 2861 + ], + "declarations": [ + { + "constant": false, + "id": 2861, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2933, + "src": "31525:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2863, + "initialValue": { + "hexValue": "30", + "id": 2862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31537:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "31525:13:0" + }, + "loopExpression": { + "expression": { + "id": 2869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "31568:3:0", + "subExpression": { + "id": 2868, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "31568:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2870, + "nodeType": "ExpressionStatement", + "src": "31568:3:0" + }, + "nodeType": "ForStatement", + "src": "31520:463:0" + }, + { + "assignments": [ + 2935 + ], + "declarations": [ + { + "constant": false, + "id": 2935, + "mutability": "mutable", + "name": "balance0", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "31993:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2934, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31993:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2945, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2942, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "32045:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2941, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32037:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2940, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32037:7:0", + "typeDescriptions": {} + } + }, + "id": 2943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32037:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 2937, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "32019:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2936, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "32012:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32012:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "32012:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32012:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "31993:58:0" + }, + { + "assignments": [ + 2947 + ], + "declarations": [ + { + "constant": false, + "id": 2947, + "mutability": "mutable", + "name": "balance1", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "32061:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32061:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2957, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2954, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "32113:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32105:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2952, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32105:7:0", + "typeDescriptions": {} + } + }, + "id": 2955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32105:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 2949, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "32087:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2948, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "32080:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 2950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32080:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 2951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "32080:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 2956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32080:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32061:58:0" + }, + { + "assignments": [ + 2959, + 2961, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 2959, + "mutability": "mutable", + "name": "inAmount0", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "32131:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32131:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2961, + "mutability": "mutable", + "name": "inAmount1", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "32150:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2960, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32150:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + null, + null + ], + "id": 2979, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 2964, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "32252:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2965, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "32286:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 2966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32316:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 2967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32339:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "id": 2970, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "32369:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32361:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "32361:7:0", + "typeDescriptions": {} + } + }, + "id": 2971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32361:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32399:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 2973, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32399:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 2972, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "32394:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32394:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 2976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "32394:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2963, + "name": "CellarAddParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "32210:15:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CellarAddParams_$1277_storage_ptr_$", + "typeString": "type(struct ICellarPoolShare.CellarAddParams storage pointer)" + } + }, + "id": 2977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "amount0Desired", + "amount1Desired", + "amount0Min", + "amount1Min", + "recipient", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "32210:212:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + ], + "id": 2962, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "32183:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarAddParams_$1277_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarAddParams memory) returns (uint256,uint256,uint128,uint128)" + } + }, + "id": 2978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32183:249:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32130:302:0" + }, + { + "expression": { + "id": 2982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2980, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "32443:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 2981, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "32455:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32443:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2983, + "nodeType": "ExpressionStatement", + "src": "32443:21:0" + }, + { + "expression": { + "id": 2986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 2984, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "32474:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 2985, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "32486:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32474:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2987, + "nodeType": "ExpressionStatement", + "src": "32474:21:0" + }, + { + "assignments": [ + 2989, + null, + null, + null, + null, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 2989, + "mutability": "mutable", + "name": "sqrtPriceX96", + "nodeType": "VariableDeclaration", + "scope": 3207, + "src": "32506:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 2988, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "32506:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + null, + null, + null, + null, + null, + null + ], + "id": 3002, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 2995, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "32639:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2996, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "32663:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2997, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "32687:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "arguments": [ + { + "id": 2992, + "name": "UNISWAPV3FACTORY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "32596:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2991, + "name": "IUniswapV3Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "32578:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Factory_$239_$", + "typeString": "type(contract IUniswapV3Factory)" + } + }, + "id": 2993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32578:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Factory_$239", + "typeString": "contract IUniswapV3Factory" + } + }, + "id": 2994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 238, + "src": "32578:43:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$", + "typeString": "function (address,address,uint24) view external returns (address)" + } + }, + "id": 2998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32578:131:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2990, + "name": "IUniswapV3Pool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 257, + "src": "32550:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Pool_$257_$", + "typeString": "type(contract IUniswapV3Pool)" + } + }, + "id": 2999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32550:169:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Pool_$257", + "typeString": "contract IUniswapV3Pool" + } + }, + "id": 3000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slot0", + "nodeType": "MemberAccess", + "referencedDeclaration": 256, + "src": "32550:184:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "id": 3001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32550:186:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32505:231:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3003, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "32750:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3004, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "32761:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32750:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3006, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "32773:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3007, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "32784:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32773:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32750:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3083, + "nodeType": "IfStatement", + "src": "32746:946:0", + "trueBody": { + "id": 3082, + "nodeType": "Block", + "src": "32795:897:0", + "statements": [ + { + "assignments": [ + 3011 + ], + "declarations": [ + { + "constant": false, + "id": 3011, + "mutability": "mutable", + "name": "swapAmount", + "nodeType": "VariableDeclaration", + "scope": 3082, + "src": "32809:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3010, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "32809:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3037, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3012, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "32831:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3013, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "32842:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32831:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3015, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "32854:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3016, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "32865:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32854:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32831:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3019, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "32830:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 3024, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "32973:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3025, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "33004:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "expression": { + "id": 3026, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "33038:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "33038:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3022, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "32936:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "32936:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32936:119:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3029, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "33073:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "expression": { + "id": 3030, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "33103:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "33103:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3020, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "32903:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "32903:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "32903:217:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3033, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "33135:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32903:241:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3035, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "32902:243:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "32830:315:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "32809:336:0" + }, + { + "expression": { + "arguments": [ + { + "id": 3042, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "33186:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3043, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3011, + "src": "33198:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 3039, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "33166:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3038, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "33159:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33159:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 3041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "33159:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 3044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33159:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3045, + "nodeType": "ExpressionStatement", + "src": "33159:50:0" + }, + { + "clauses": [ + { + "block": { + "id": 3069, + "nodeType": "Block", + "src": "33616:2:0", + "statements": [] + }, + "errorName": "", + "id": 3070, + "nodeType": "TryCatchClause", + "src": "33616:2:0" + }, + { + "block": { + "id": 3071, + "nodeType": "Block", + "src": "33625:2:0", + "statements": [] + }, + "errorName": "", + "id": 3072, + "nodeType": "TryCatchClause", + "src": "33619:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [ + { + "id": 3052, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "33343:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3053, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "33373:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3054, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "33398:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "arguments": [ + { + "id": 3057, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "33439:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 3056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33431:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3055, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "33431:7:0", + "typeDescriptions": {} + } + }, + "id": 3058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33431:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33473:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33473:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 3059, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "33468:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33468:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 3063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "33468:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3064, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3011, + "src": "33509:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 3065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33551:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 3066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33585:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 3050, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "33285:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 3051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ExactInputSingleParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "33285:34:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ExactInputSingleParams_$219_storage_ptr_$", + "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" + } + }, + "id": 3067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenIn", + "tokenOut", + "fee", + "recipient", + "deadline", + "amountIn", + "amountOutMinimum", + "sqrtPriceLimitX96" + ], + "nodeType": "FunctionCall", + "src": "33285:316:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 3047, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "33239:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3046, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "33227:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 3048, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33227:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwapRouter_$227", + "typeString": "contract ISwapRouter" + } + }, + "id": 3049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exactInputSingle", + "nodeType": "MemberAccess", + "referencedDeclaration": 226, + "src": "33227:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_ExactInputSingleParams_$219_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" + } + }, + "id": 3068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33227:388:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3073, + "nodeType": "TryStatement", + "src": "33223:404:0" + }, + { + "expression": { + "arguments": [ + { + "id": 3078, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "33667:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 3079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33679:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "arguments": [ + { + "id": 3075, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "33647:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3074, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "33640:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33640:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 3077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "33640:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 3080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33640:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3081, + "nodeType": "ExpressionStatement", + "src": "33640:41:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3084, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "33705:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3085, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "33716:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33705:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3087, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "33728:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3088, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "33739:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33728:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33705:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3164, + "nodeType": "IfStatement", + "src": "33701:946:0", + "trueBody": { + "id": 3163, + "nodeType": "Block", + "src": "33750:897:0", + "statements": [ + { + "assignments": [ + 3092 + ], + "declarations": [ + { + "constant": false, + "id": 3092, + "mutability": "mutable", + "name": "swapAmount", + "nodeType": "VariableDeclaration", + "scope": 3163, + "src": "33764:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "33764:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3118, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3093, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "33786:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3094, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "33797:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33786:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3096, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "33809:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 3097, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "33820:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33809:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33786:43:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3100, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "33785:45:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 3105, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "33928:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3106, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "33959:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "33959:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3108, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "33997:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "expression": { + "id": 3103, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "33891:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "33891:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33891:119:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3110, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "34028:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "34028:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3112, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2989, + "src": "34062:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "expression": { + "id": 3101, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "33858:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "33858:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "33858:217:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 3114, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2959, + "src": "34090:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33858:241:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3116, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "33857:243:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "33785:315:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "33764:336:0" + }, + { + "expression": { + "arguments": [ + { + "id": 3123, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "34141:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3124, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3092, + "src": "34153:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 3120, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "34121:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3119, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "34114:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34114:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 3122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "34114:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34114:50:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3126, + "nodeType": "ExpressionStatement", + "src": "34114:50:0" + }, + { + "clauses": [ + { + "block": { + "id": 3150, + "nodeType": "Block", + "src": "34571:2:0", + "statements": [] + }, + "errorName": "", + "id": 3151, + "nodeType": "TryCatchClause", + "src": "34571:2:0" + }, + { + "block": { + "id": 3152, + "nodeType": "Block", + "src": "34580:2:0", + "statements": [] + }, + "errorName": "", + "id": 3153, + "nodeType": "TryCatchClause", + "src": "34574:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "arguments": [ + { + "id": 3133, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "34298:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3134, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "34328:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3135, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "34353:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "arguments": [ + { + "id": 3138, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "34394:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 3137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34386:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3136, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34386:7:0", + "typeDescriptions": {} + } + }, + "id": 3139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34386:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34428:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3141, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34428:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 3140, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "34423:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34423:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 3144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "34423:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3145, + "name": "swapAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3092, + "src": "34464:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 3146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34506:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 3147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34540:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "id": 3131, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "34240:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 3132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ExactInputSingleParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 219, + "src": "34240:34:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ExactInputSingleParams_$219_storage_ptr_$", + "typeString": "type(struct ISwapRouter.ExactInputSingleParams storage pointer)" + } + }, + "id": 3148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenIn", + "tokenOut", + "fee", + "recipient", + "deadline", + "amountIn", + "amountOutMinimum", + "sqrtPriceLimitX96" + ], + "nodeType": "FunctionCall", + "src": "34240:316:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_ExactInputSingleParams_$219_memory_ptr", + "typeString": "struct ISwapRouter.ExactInputSingleParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 3128, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "34194:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3127, + "name": "ISwapRouter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 227, + "src": "34182:11:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ISwapRouter_$227_$", + "typeString": "type(contract ISwapRouter)" + } + }, + "id": 3129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34182:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ISwapRouter_$227", + "typeString": "contract ISwapRouter" + } + }, + "id": 3130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "exactInputSingle", + "nodeType": "MemberAccess", + "referencedDeclaration": 226, + "src": "34182:40:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_ExactInputSingleParams_$219_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)" + } + }, + "id": 3149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34182:388:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3154, + "nodeType": "TryStatement", + "src": "34178:404:0" + }, + { + "expression": { + "arguments": [ + { + "id": 3159, + "name": "SWAPROUTER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "34622:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 3160, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34634:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "arguments": [ + { + "id": 3156, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "34602:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3155, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "34595:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34595:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 3158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "34595:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 3161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34595:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3162, + "nodeType": "ExpressionStatement", + "src": "34595:41:0" + } + ] + } + }, + { + "expression": { + "id": 3175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3165, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "34657:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 3172, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "34701:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 3171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34693:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34693:7:0", + "typeDescriptions": {} + } + }, + "id": 3173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34693:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 3167, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "34675:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3166, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "34668:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34668:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 3169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "34668:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 3174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34668:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34657:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3176, + "nodeType": "ExpressionStatement", + "src": "34657:50:0" + }, + { + "expression": { + "id": 3187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3177, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "34717:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 3184, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "34761:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 3183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34753:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34753:7:0", + "typeDescriptions": {} + } + }, + "id": 3185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34753:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "arguments": [ + { + "id": 3179, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "34735:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3178, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "34728:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 3180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34728:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 3181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 63, + "src": "34728:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 3186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34728:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34717:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3188, + "nodeType": "ExpressionStatement", + "src": "34717:50:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3191, + "name": "balance0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2935, + "src": "34846:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3192, + "name": "balance1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2947, + "src": "34880:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "30", + "id": 3193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34910:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 3194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34933:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "id": 3197, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "34963:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 3196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34955:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3195, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "34955:7:0", + "typeDescriptions": {} + } + }, + "id": 3198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34955:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 3201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34993:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3200, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34993:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 3199, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "34988:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34988:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 3203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "34988:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3190, + "name": "CellarAddParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "34804:15:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CellarAddParams_$1277_storage_ptr_$", + "typeString": "type(struct ICellarPoolShare.CellarAddParams storage pointer)" + } + }, + "id": 3204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "amount0Desired", + "amount1Desired", + "amount0Min", + "amount1Min", + "recipient", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "34804:212:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + ], + "id": 3189, + "name": "_addLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "34777:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_CellarAddParams_$1277_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (struct ICellarPoolShare.CellarAddParams memory) returns (uint256,uint256,uint128,uint128)" + } + }, + "id": 3205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "34777:249:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint256,uint256,uint128,uint128)" + } + }, + "id": 3206, + "nodeType": "ExpressionStatement", + "src": "34777:249:0" + } + ] + }, + "functionSelector": "135d4f24", + "id": 3208, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 2795, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "30847:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "30847:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 2797, + "modifierName": { + "id": 2794, + "name": "notLocked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1434, + "src": "30837:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "30837:21:0" + } + ], + "name": "rebalance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2792, + "mutability": "mutable", + "name": "_cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 3208, + "src": "30787:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 2790, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "30787:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 2791, + "nodeType": "ArrayTypeName", + "src": "30787:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + } + ], + "src": "30786:41:0" + }, + "returnParameters": { + "id": 2798, + "nodeType": "ParameterList", + "parameters": [], + "src": "30859:0:0" + }, + "scope": 4770, + "src": "30768:4265:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1356 + ], + "body": { + "id": 3230, + "nodeType": "Block", + "src": "35111:92:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3217, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35129:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "35129:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3219, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "35143:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35129:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523231", + "id": 3221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35151:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + }, + "value": "R21" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + } + ], + "id": 3216, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "35121:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35121:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3223, + "nodeType": "ExpressionStatement", + "src": "35121:36:0" + }, + { + "expression": { + "id": 3228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3224, + "name": "validator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1471, + "src": "35167:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 3226, + "indexExpression": { + "id": 3225, + "name": "_validator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3210, + "src": "35177:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "35167:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3227, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3212, + "src": "35191:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "35167:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3229, + "nodeType": "ExpressionStatement", + "src": "35167:29:0" + } + ] + }, + "functionSelector": "4623c91d", + "id": 3231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setValidator", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3214, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35102:8:0" + }, + "parameters": { + "id": 3213, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3210, + "mutability": "mutable", + "name": "_validator", + "nodeType": "VariableDeclaration", + "scope": 3231, + "src": "35061:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35061:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3212, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 3231, + "src": "35081:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3211, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "35081:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "35060:32:0" + }, + "returnParameters": { + "id": 3215, + "nodeType": "ParameterList", + "parameters": [], + "src": "35111:0:0" + }, + "scope": 4770, + "src": "35039:164:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1361 + ], + "body": { + "id": 3249, + "nodeType": "Block", + "src": "35272:80:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3238, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35290:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "35290:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3240, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "35304:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35290:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523231", + "id": 3242, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35312:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + }, + "value": "R21" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + } + ], + "id": 3237, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "35282:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35282:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3244, + "nodeType": "ExpressionStatement", + "src": "35282:36:0" + }, + { + "expression": { + "id": 3247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3245, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "35328:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3246, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3233, + "src": "35337:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35328:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3248, + "nodeType": "ExpressionStatement", + "src": "35328:17:0" + } + ] + }, + "functionSelector": "f2fde38b", + "id": 3250, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3235, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35263:8:0" + }, + "parameters": { + "id": 3234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3233, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 3250, + "src": "35236:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35236:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "35235:18:0" + }, + "returnParameters": { + "id": 3236, + "nodeType": "ParameterList", + "parameters": [], + "src": "35272:0:0" + }, + "scope": 4770, + "src": "35209:143:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1366 + ], + "body": { + "id": 3268, + "nodeType": "Block", + "src": "35407:75:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3257, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "35425:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "35425:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3259, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "35439:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "35425:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523231", + "id": 3261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35447:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + }, + "value": "R21" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_810e1c86c67641ae573ea1fcd488e3dd3ae233b2f83045bdcd35285ba5d0658e", + "typeString": "literal_string \"R21\"" + } + ], + "id": 3256, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "35417:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "35417:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3263, + "nodeType": "ExpressionStatement", + "src": "35417:36:0" + }, + { + "expression": { + "id": 3266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3264, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1493, + "src": "35463:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3265, + "name": "newFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3252, + "src": "35469:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "35463:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 3267, + "nodeType": "ExpressionStatement", + "src": "35463:12:0" + } + ] + }, + "functionSelector": "8e005553", + "id": 3269, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setFee", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3254, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35398:8:0" + }, + "parameters": { + "id": 3253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3252, + "mutability": "mutable", + "name": "newFee", + "nodeType": "VariableDeclaration", + "scope": 3269, + "src": "35374:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 3251, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "35374:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "35373:15:0" + }, + "returnParameters": { + "id": 3255, + "nodeType": "ParameterList", + "parameters": [], + "src": "35407:0:0" + }, + "scope": 4770, + "src": "35358:124:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1371 + ], + "body": { + "id": 3277, + "nodeType": "Block", + "src": "35546:30:0", + "statements": [ + { + "expression": { + "id": 3275, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "35563:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3274, + "id": 3276, + "nodeType": "Return", + "src": "35556:13:0" + } + ] + }, + "functionSelector": "8da5cb5b", + "id": 3278, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3271, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35519:8:0" + }, + "parameters": { + "id": 3270, + "nodeType": "ParameterList", + "parameters": [], + "src": "35502:2:0" + }, + "returnParameters": { + "id": 3274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3273, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3278, + "src": "35537:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35537:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "35536:9:0" + }, + "scope": 4770, + "src": "35488:88:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1376 + ], + "body": { + "id": 3286, + "nodeType": "Block", + "src": "35645:29:0", + "statements": [ + { + "expression": { + "id": 3284, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1477, + "src": "35662:5:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 3283, + "id": 3285, + "nodeType": "Return", + "src": "35655:12:0" + } + ] + }, + "functionSelector": "06fdde03", + "id": 3287, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3280, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35612:8:0" + }, + "parameters": { + "id": 3279, + "nodeType": "ParameterList", + "parameters": [], + "src": "35595:2:0" + }, + "returnParameters": { + "id": 3283, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3282, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3287, + "src": "35630:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3281, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "35630:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "35629:15:0" + }, + "scope": 4770, + "src": "35582:92:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1381 + ], + "body": { + "id": 3295, + "nodeType": "Block", + "src": "35745:31:0", + "statements": [ + { + "expression": { + "id": 3293, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1479, + "src": "35762:7:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 3292, + "id": 3294, + "nodeType": "Return", + "src": "35755:14:0" + } + ] + }, + "functionSelector": "95d89b41", + "id": 3296, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3289, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35712:8:0" + }, + "parameters": { + "id": 3288, + "nodeType": "ParameterList", + "parameters": [], + "src": "35695:2:0" + }, + "returnParameters": { + "id": 3292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3291, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3296, + "src": "35730:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3290, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "35730:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "35729:15:0" + }, + "scope": 4770, + "src": "35680:96:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1386 + ], + "body": { + "id": 3304, + "nodeType": "Block", + "src": "35841:26:0", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 3302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "35858:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 3301, + "id": 3303, + "nodeType": "Return", + "src": "35851:9:0" + } + ] + }, + "functionSelector": "313ce567", + "id": 3305, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3298, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35816:8:0" + }, + "parameters": { + "id": 3297, + "nodeType": "ParameterList", + "parameters": [], + "src": "35799:2:0" + }, + "returnParameters": { + "id": 3301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3300, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3305, + "src": "35834:5:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 3299, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "35834:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "35833:7:0" + }, + "scope": 4770, + "src": "35782:85:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 68 + ], + "body": { + "id": 3313, + "nodeType": "Block", + "src": "35937:36:0", + "statements": [ + { + "expression": { + "id": 3311, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "35954:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3310, + "id": 3312, + "nodeType": "Return", + "src": "35947:19:0" + } + ] + }, + "functionSelector": "18160ddd", + "id": 3314, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3307, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "35910:8:0" + }, + "parameters": { + "id": 3306, + "nodeType": "ParameterList", + "parameters": [], + "src": "35893:2:0" + }, + "returnParameters": { + "id": 3310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3309, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3314, + "src": "35928:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "35928:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "35927:9:0" + }, + "scope": 4770, + "src": "35873:100:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 63 + ], + "body": { + "id": 3326, + "nodeType": "Block", + "src": "36076:42:0", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 3322, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "36093:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3324, + "indexExpression": { + "id": 3323, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3316, + "src": "36103:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36093:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3321, + "id": 3325, + "nodeType": "Return", + "src": "36086:25:0" + } + ] + }, + "functionSelector": "70a08231", + "id": 3327, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3318, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "36041:8:0" + }, + "parameters": { + "id": 3317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3316, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3327, + "src": "35998:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "35998:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "35997:17:0" + }, + "returnParameters": { + "id": 3321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3320, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3327, + "src": "36063:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36063:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "36062:9:0" + }, + "scope": 4770, + "src": "35979:139:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 56 + ], + "body": { + "id": 3343, + "nodeType": "Block", + "src": "36237:52:0", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 3337, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "36254:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 3339, + "indexExpression": { + "id": 3338, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3329, + "src": "36266:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36254:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3341, + "indexExpression": { + "id": 3340, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3331, + "src": "36274:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36254:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3336, + "id": 3342, + "nodeType": "Return", + "src": "36247:35:0" + } + ] + }, + "functionSelector": "dd62ed3e", + "id": 3344, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3333, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "36202:8:0" + }, + "parameters": { + "id": 3332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3329, + "mutability": "mutable", + "name": "owner_", + "nodeType": "VariableDeclaration", + "scope": 3344, + "src": "36143:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36143:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3331, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 3344, + "src": "36159:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3330, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36159:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "36142:33:0" + }, + "returnParameters": { + "id": 3336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3335, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "scope": 3344, + "src": "36224:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3334, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36224:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "36223:9:0" + }, + "scope": 4770, + "src": "36124:165:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 3412, + "nodeType": "Block", + "src": "36404:490:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3354, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3346, + "src": "36422:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36440:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "36432:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3355, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36432:7:0", + "typeDescriptions": {} + } + }, + "id": 3358, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36432:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "36422:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523232", + "id": 3360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36444:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2e38e7fcc805ee3f93c0e3733870ab4b88276012f3cf5cbb2725fffe037ab10a", + "typeString": "literal_string \"R22\"" + }, + "value": "R22" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2e38e7fcc805ee3f93c0e3733870ab4b88276012f3cf5cbb2725fffe037ab10a", + "typeString": "literal_string \"R22\"" + } + ], + "id": 3353, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36414:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36414:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3362, + "nodeType": "ExpressionStatement", + "src": "36414:36:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3364, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3348, + "src": "36498:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36519:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3366, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "36511:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36511:7:0", + "typeDescriptions": {} + } + }, + "id": 3368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36511:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "36498:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523233", + "id": 3370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36523:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_308ba863d677bbbfc70c791c397fdfd660d30183352dcd9949f8c751db93e97e", + "typeString": "literal_string \"R23\"" + }, + "value": "R23" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_308ba863d677bbbfc70c791c397fdfd660d30183352dcd9949f8c751db93e97e", + "typeString": "literal_string \"R23\"" + } + ], + "id": 3363, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36490:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36490:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3372, + "nodeType": "ExpressionStatement", + "src": "36490:39:0" + }, + { + "expression": { + "arguments": [ + { + "id": 3374, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3346, + "src": "36589:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3375, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3348, + "src": "36597:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3376, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "36608:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3373, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4765, + "src": "36568:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36568:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3378, + "nodeType": "ExpressionStatement", + "src": "36568:47:0" + }, + { + "assignments": [ + 3380 + ], + "declarations": [ + { + "constant": false, + "id": 3380, + "mutability": "mutable", + "name": "senderBalance", + "nodeType": "VariableDeclaration", + "scope": 3412, + "src": "36626:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3379, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36626:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3384, + "initialValue": { + "baseExpression": { + "id": 3381, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "36650:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3383, + "indexExpression": { + "id": 3382, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3346, + "src": "36660:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "36650:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "36626:41:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3386, + "name": "senderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3380, + "src": "36685:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 3387, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "36702:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36685:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523234", + "id": 3389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36710:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a31b5790a5af7fcca697766dbe445c8f875b71b716177ebbbf059fb39709bd68", + "typeString": "literal_string \"R24\"" + }, + "value": "R24" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a31b5790a5af7fcca697766dbe445c8f875b71b716177ebbbf059fb39709bd68", + "typeString": "literal_string \"R24\"" + } + ], + "id": 3385, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36677:39:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3391, + "nodeType": "ExpressionStatement", + "src": "36677:39:0" + }, + { + "expression": { + "id": 3398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3392, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "36754:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3394, + "indexExpression": { + "id": 3393, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3346, + "src": "36764:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "36754:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3395, + "name": "senderBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3380, + "src": "36774:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3396, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "36790:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36774:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36754:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3399, + "nodeType": "ExpressionStatement", + "src": "36754:42:0" + }, + { + "expression": { + "id": 3404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3400, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "36806:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3402, + "indexExpression": { + "id": 3401, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3348, + "src": "36816:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "36806:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 3403, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "36830:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "36806:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3405, + "nodeType": "ExpressionStatement", + "src": "36806:30:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3407, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3346, + "src": "36861:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3408, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3348, + "src": "36869:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3409, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3350, + "src": "36880:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3406, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "36852:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36852:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3411, + "nodeType": "EmitStatement", + "src": "36847:40:0" + } + ] + }, + "id": 3413, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3346, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "36323:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36323:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3348, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "36347:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36347:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3350, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3413, + "src": "36374:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3349, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36374:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "36313:81:0" + }, + "returnParameters": { + "id": 3352, + "nodeType": "ParameterList", + "parameters": [], + "src": "36404:0:0" + }, + "scope": 4770, + "src": "36295:599:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3458, + "nodeType": "Block", + "src": "36957:261:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3421, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "36975:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36994:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "36986:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36986:7:0", + "typeDescriptions": {} + } + }, + "id": 3425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36986:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "36975:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523235", + "id": 3427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "36998:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3540168dcf753b156485d875bc5fec81f6a213f07b3a86770c08cd8c9b01a7ff", + "typeString": "literal_string \"R25\"" + }, + "value": "R25" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3540168dcf753b156485d875bc5fec81f6a213f07b3a86770c08cd8c9b01a7ff", + "typeString": "literal_string \"R25\"" + } + ], + "id": 3420, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "36967:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "36967:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3429, + "nodeType": "ExpressionStatement", + "src": "36967:37:0" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 3433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37068:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37060:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3431, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37060:7:0", + "typeDescriptions": {} + } + }, + "id": 3434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37060:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 3435, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "37072:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3436, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "37081:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3430, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4765, + "src": "37039:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37039:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3438, + "nodeType": "ExpressionStatement", + "src": "37039:49:0" + }, + { + "expression": { + "id": 3441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3439, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "37099:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 3440, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "37115:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37099:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3442, + "nodeType": "ExpressionStatement", + "src": "37099:22:0" + }, + { + "expression": { + "id": 3447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3443, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "37131:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3445, + "indexExpression": { + "id": 3444, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "37141:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "37131:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 3446, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "37153:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37131:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3448, + "nodeType": "ExpressionStatement", + "src": "37131:28:0" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 3452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37191:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3451, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37183:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37183:7:0", + "typeDescriptions": {} + } + }, + "id": 3453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37183:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 3454, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3415, + "src": "37195:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3455, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "37204:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3449, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "37174:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37174:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3457, + "nodeType": "EmitStatement", + "src": "37169:42:0" + } + ] + }, + "id": 3459, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3415, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3459, + "src": "36915:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3414, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "36915:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3417, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3459, + "src": "36932:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "36932:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "36914:33:0" + }, + "returnParameters": { + "id": 3419, + "nodeType": "ParameterList", + "parameters": [], + "src": "36957:0:0" + }, + "scope": 4770, + "src": "36900:318:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3519, + "nodeType": "Block", + "src": "37281:407:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3467, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3461, + "src": "37299:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37318:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37310:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37310:7:0", + "typeDescriptions": {} + } + }, + "id": 3471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37310:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "37299:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523236", + "id": 3473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37322:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b2fa7c79c4d44f1d5423950380e88c48723646df4bf51255e7a7f8a64cddc5bc", + "typeString": "literal_string \"R26\"" + }, + "value": "R26" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b2fa7c79c4d44f1d5423950380e88c48723646df4bf51255e7a7f8a64cddc5bc", + "typeString": "literal_string \"R26\"" + } + ], + "id": 3466, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "37291:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37291:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3475, + "nodeType": "ExpressionStatement", + "src": "37291:37:0" + }, + { + "expression": { + "arguments": [ + { + "id": 3477, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3461, + "src": "37386:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 3480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37403:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37395:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37395:7:0", + "typeDescriptions": {} + } + }, + "id": 3481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37395:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 3482, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "37407:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3476, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4765, + "src": "37365:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37365:49:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3484, + "nodeType": "ExpressionStatement", + "src": "37365:49:0" + }, + { + "assignments": [ + 3486 + ], + "declarations": [ + { + "constant": false, + "id": 3486, + "mutability": "mutable", + "name": "accountBalance", + "nodeType": "VariableDeclaration", + "scope": 3519, + "src": "37425:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37425:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3490, + "initialValue": { + "baseExpression": { + "id": 3487, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "37450:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3489, + "indexExpression": { + "id": 3488, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3461, + "src": "37460:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37450:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "37425:43:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3492, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "37486:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 3493, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "37504:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37486:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523237", + "id": 3495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37512:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d988122cca1ef6058e20807c88a9a00b3823e5269ddd73ccd1aae2ddbefd2d9e", + "typeString": "literal_string \"R27\"" + }, + "value": "R27" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d988122cca1ef6058e20807c88a9a00b3823e5269ddd73ccd1aae2ddbefd2d9e", + "typeString": "literal_string \"R27\"" + } + ], + "id": 3491, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "37478:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37478:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3497, + "nodeType": "ExpressionStatement", + "src": "37478:40:0" + }, + { + "expression": { + "id": 3504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3498, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1461, + "src": "37552:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3500, + "indexExpression": { + "id": 3499, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3461, + "src": "37562:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "37552:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3501, + "name": "accountBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3486, + "src": "37573:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3502, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "37590:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37573:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37552:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3505, + "nodeType": "ExpressionStatement", + "src": "37552:44:0" + }, + { + "expression": { + "id": 3508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3506, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "37606:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 3507, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "37622:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37606:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3509, + "nodeType": "ExpressionStatement", + "src": "37606:22:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3511, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3461, + "src": "37653:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 3514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37670:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37662:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3512, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37662:7:0", + "typeDescriptions": {} + } + }, + "id": 3515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37662:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 3516, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "37674:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3510, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10, + "src": "37644:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37644:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3518, + "nodeType": "EmitStatement", + "src": "37639:42:0" + } + ] + }, + "id": 3520, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3461, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 3520, + "src": "37239:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37239:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3463, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3520, + "src": "37256:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37256:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "37238:33:0" + }, + "returnParameters": { + "id": 3465, + "nodeType": "ParameterList", + "parameters": [], + "src": "37281:0:0" + }, + "scope": 4770, + "src": "37224:464:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3563, + "nodeType": "Block", + "src": "37800:252:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3530, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3522, + "src": "37818:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37836:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37828:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3531, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37828:7:0", + "typeDescriptions": {} + } + }, + "id": 3534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37828:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "37818:20:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523238", + "id": 3536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37840:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b8ca32e68d3fec937682270b839fa39b03e21424ae11f96bb0ebbbca45f4721b", + "typeString": "literal_string \"R28\"" + }, + "value": "R28" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b8ca32e68d3fec937682270b839fa39b03e21424ae11f96bb0ebbbca45f4721b", + "typeString": "literal_string \"R28\"" + } + ], + "id": 3529, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "37810:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37810:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3538, + "nodeType": "ExpressionStatement", + "src": "37810:36:0" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3540, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3524, + "src": "37893:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37912:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "37904:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3541, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37904:7:0", + "typeDescriptions": {} + } + }, + "id": 3544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37904:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "37893:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "523239", + "id": 3546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "37916:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c0a12e27363a72c44b40485896a0627b226165baaf56b2bd397f78cd1964a602", + "typeString": "literal_string \"R29\"" + }, + "value": "R29" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c0a12e27363a72c44b40485896a0627b226165baaf56b2bd397f78cd1964a602", + "typeString": "literal_string \"R29\"" + } + ], + "id": 3539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "37885:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "37885:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3548, + "nodeType": "ExpressionStatement", + "src": "37885:37:0" + }, + { + "expression": { + "id": 3555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 3549, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1467, + "src": "37960:11:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 3552, + "indexExpression": { + "id": 3550, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3522, + "src": "37972:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "37960:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 3553, + "indexExpression": { + "id": 3551, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3524, + "src": "37980:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "37960:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3554, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3526, + "src": "37991:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "37960:37:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3556, + "nodeType": "ExpressionStatement", + "src": "37960:37:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3558, + "name": "owner_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3522, + "src": "38021:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3559, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3524, + "src": "38029:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3560, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3526, + "src": "38038:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3557, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "38012:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 3561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38012:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3562, + "nodeType": "EmitStatement", + "src": "38007:38:0" + } + ] + }, + "id": 3564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3527, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3522, + "mutability": "mutable", + "name": "owner_", + "nodeType": "VariableDeclaration", + "scope": 3564, + "src": "37721:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37721:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3524, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "scope": 3564, + "src": "37745:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3523, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "37745:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3526, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 3564, + "src": "37770:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "37770:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "37711:79:0" + }, + "returnParameters": { + "id": 3528, + "nodeType": "ParameterList", + "parameters": [], + "src": "37800:0:0" + }, + "scope": 4770, + "src": "37694:358:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3909, + "nodeType": "Block", + "src": "38325:3637:0", + "statements": [ + { + "expression": { + "id": 3589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3582, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "38335:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 3586, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "38359:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "38359:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "38345:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 3583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38349:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3584, + "nodeType": "ArrayTypeName", + "src": "38349:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 3588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38345:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "38335:47:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3590, + "nodeType": "ExpressionStatement", + "src": "38335:47:0" + }, + { + "expression": { + "id": 3598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3591, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3580, + "src": "38392:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 3595, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "38416:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "38416:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "38402:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 3592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38406:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3593, + "nodeType": "ArrayTypeName", + "src": "38406:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 3597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38402:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "src": "38392:47:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3599, + "nodeType": "ExpressionStatement", + "src": "38392:47:0" + }, + { + "assignments": [ + 3601, + 3603, + null, + null, + null, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 3601, + "mutability": "mutable", + "name": "sqrtPriceX96", + "nodeType": "VariableDeclaration", + "scope": 3909, + "src": "38450:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 3600, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "38450:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3603, + "mutability": "mutable", + "name": "currentTick", + "nodeType": "VariableDeclaration", + "scope": 3909, + "src": "38472:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 3602, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "38472:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + }, + null, + null, + null, + null, + null + ], + "id": 3616, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3609, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "38600:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3610, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "38624:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3611, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "38648:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "arguments": [ + { + "id": 3606, + "name": "UNISWAPV3FACTORY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "38557:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3605, + "name": "IUniswapV3Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "38539:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Factory_$239_$", + "typeString": "type(contract IUniswapV3Factory)" + } + }, + "id": 3607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38539:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Factory_$239", + "typeString": "contract IUniswapV3Factory" + } + }, + "id": 3608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 238, + "src": "38539:43:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$", + "typeString": "function (address,address,uint24) view external returns (address)" + } + }, + "id": 3612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38539:131:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3604, + "name": "IUniswapV3Pool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 257, + "src": "38511:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Pool_$257_$", + "typeString": "type(contract IUniswapV3Pool)" + } + }, + "id": 3613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38511:169:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Pool_$257", + "typeString": "contract IUniswapV3Pool" + } + }, + "id": 3614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slot0", + "nodeType": "MemberAccess", + "referencedDeclaration": 256, + "src": "38511:184:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "id": 3615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38511:186:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "38449:248:0" + }, + { + "assignments": [ + 3618 + ], + "declarations": [ + { + "constant": false, + "id": 3618, + "mutability": "mutable", + "name": "sqrtPrice0", + "nodeType": "VariableDeclaration", + "scope": 3909, + "src": "38707:26:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair" + }, + "typeName": { + "id": 3617, + "name": "UintPair", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1302, + "src": "38707:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_storage_ptr", + "typeString": "struct ICellarPoolShare.UintPair" + } + }, + "visibility": "internal" + } + ], + "id": 3619, + "nodeType": "VariableDeclarationStatement", + "src": "38707:26:0" + }, + { + "assignments": [ + 3621 + ], + "declarations": [ + { + "constant": false, + "id": 3621, + "mutability": "mutable", + "name": "weight00", + "nodeType": "VariableDeclaration", + "scope": 3909, + "src": "38744:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38744:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3622, + "nodeType": "VariableDeclarationStatement", + "src": "38744:16:0" + }, + { + "assignments": [ + 3624 + ], + "declarations": [ + { + "constant": false, + "id": 3624, + "mutability": "mutable", + "name": "weight10", + "nodeType": "VariableDeclaration", + "scope": 3909, + "src": "38770:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38770:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 3625, + "nodeType": "VariableDeclarationStatement", + "src": "38770:16:0" + }, + { + "expression": { + "id": 3636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3626, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "38797:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3628, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "38797:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 3631, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "38853:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3633, + "indexExpression": { + "hexValue": "30", + "id": 3632, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38869:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38853:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3634, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "38853:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 3629, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "38812:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 3630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "38812:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 3635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38812:79:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "38797:94:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3637, + "nodeType": "ExpressionStatement", + "src": "38797:94:0" + }, + { + "expression": { + "id": 3648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3638, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "38901:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3640, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "38901:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 3643, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "38957:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3645, + "indexExpression": { + "hexValue": "30", + "id": 3644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "38973:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "38957:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3646, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "38957:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 3641, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "38916:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 3642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "38916:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 3647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "38916:79:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "38901:94:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3649, + "nodeType": "ExpressionStatement", + "src": "38901:94:0" + }, + { + "expression": { + "id": 3655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3650, + "name": "weight00", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3621, + "src": "39006:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "baseExpression": { + "id": 3651, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39017:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3653, + "indexExpression": { + "hexValue": "30", + "id": 3652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39033:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39017:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "39017:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "39006:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3656, + "nodeType": "ExpressionStatement", + "src": "39006:36:0" + }, + { + "expression": { + "id": 3665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3657, + "name": "weight10", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3624, + "src": "39053:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "baseExpression": { + "id": 3658, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39064:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3663, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3659, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39080:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "39080:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 3661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39105:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "39080:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39064:43:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "39064:50:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "39053:61:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3666, + "nodeType": "ExpressionStatement", + "src": "39053:61:0" + }, + { + "body": { + "id": 3907, + "nodeType": "Block", + "src": "39176:2780:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "id": 3683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 3678, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39194:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3680, + "indexExpression": { + "id": 3679, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39210:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39194:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "39194:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39223:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "39194:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3701, + "nodeType": "IfStatement", + "src": "39190:285:0", + "trueBody": { + "id": 3700, + "nodeType": "Block", + "src": "39226:249:0", + "statements": [ + { + "assignments": [ + null, + null, + null, + null, + null, + null, + null, + 3685, + null, + null, + null, + null + ], + "declarations": [ + null, + null, + null, + null, + null, + null, + null, + { + "constant": false, + "id": 3685, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 3700, + "src": "39259:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 3684, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "39259:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + null, + null, + null, + null + ], + "id": 3695, + "initialValue": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 3690, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39387:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3692, + "indexExpression": { + "id": 3691, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39403:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39387:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3693, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "39387:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + ], + "expression": { + "arguments": [ + { + "id": 3687, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "39332:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3686, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "39304:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 3688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39304:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 3689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 201, + "src": "39304:82:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (uint256) view external returns (uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)" + } + }, + "id": 3694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39304:110:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "39244:170:0" + }, + { + "expression": { + "id": 3698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3696, + "name": "liquidityBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3574, + "src": "39432:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 3697, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3685, + "src": "39451:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "39432:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 3699, + "nodeType": "ExpressionStatement", + "src": "39432:28:0" + } + ] + } + }, + { + "assignments": [ + 3703 + ], + "declarations": [ + { + "constant": false, + "id": 3703, + "mutability": "mutable", + "name": "sqrtCurrentTickPriceX96", + "nodeType": "VariableDeclaration", + "scope": 3907, + "src": "39489:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair" + }, + "typeName": { + "id": 3702, + "name": "UintPair", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1302, + "src": "39489:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_storage_ptr", + "typeString": "struct ICellarPoolShare.UintPair" + } + }, + "visibility": "internal" + } + ], + "id": 3704, + "nodeType": "VariableDeclarationStatement", + "src": "39489:39:0" + }, + { + "expression": { + "id": 3715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3705, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "39542:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3707, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "39542:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 3710, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39615:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3712, + "indexExpression": { + "id": 3711, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39631:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39615:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3713, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "39615:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 3708, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "39570:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 3709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "39570:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 3714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39570:87:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "39542:115:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3716, + "nodeType": "ExpressionStatement", + "src": "39542:115:0" + }, + { + "expression": { + "id": 3727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3717, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "39671:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "39671:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 3722, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39744:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3724, + "indexExpression": { + "id": 3723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39760:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39744:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3725, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "39744:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 3720, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "39699:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 3721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "39699:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 3726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39699:87:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "39671:115:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3728, + "nodeType": "ExpressionStatement", + "src": "39671:115:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "id": 3734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3729, + "name": "currentTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3603, + "src": "39805:11:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 3730, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39820:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3732, + "indexExpression": { + "id": 3731, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39836:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "39820:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3733, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "39820:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "src": "39805:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "id": 3789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3784, + "name": "currentTick", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3603, + "src": "40560:11:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 3785, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "40575:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3787, + "indexExpression": { + "id": 3786, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "40591:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40575:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3788, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "40575:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "src": "40560:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3904, + "nodeType": "Block", + "src": "40967:979:0", + "statements": [ + { + "expression": { + "id": 3863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3825, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "40985:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3827, + "indexExpression": { + "id": 3826, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "40993:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "40985:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 3834, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "41138:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3835, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "41138:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3836, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "41180:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3837, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "41180:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3838, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "41222:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3839, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "41222:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 3840, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "41237:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3841, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "41237:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41222:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3832, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "41093:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "41093:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41093:182:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3844, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "41301:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3845, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "41301:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 3846, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3601, + "src": "41329:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "41301:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3848, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "41367:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3849, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "41367:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3830, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "41052:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "41052:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41052:362:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3851, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "41436:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "41436:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3853, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3601, + "src": "41474:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "expression": { + "id": 3828, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "41015:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "41015:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41015:489:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 3855, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "41507:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3857, + "indexExpression": { + "id": 3856, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "41523:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41507:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3858, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "41507:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "41015:517:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3860, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "41014:519:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3861, + "name": "weight00", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3621, + "src": "41552:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41014:546:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40985:575:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3864, + "nodeType": "ExpressionStatement", + "src": "40985:575:0" + }, + { + "expression": { + "id": 3890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3865, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3580, + "src": "41579:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3867, + "indexExpression": { + "id": 3866, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "41587:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "41579:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3870, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3601, + "src": "41646:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 3871, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "41661:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3872, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "41661:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41646:40:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3874, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "41708:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "41708:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3876, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "41746:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3877, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "41746:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 3878, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "41761:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3879, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "41761:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41746:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3868, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "41609:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "41609:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "41609:182:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 3882, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "41794:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3884, + "indexExpression": { + "id": 3883, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "41810:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41794:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3885, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "41794:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "41609:210:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3887, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "41608:212:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3888, + "name": "weight10", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3624, + "src": "41839:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41608:239:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41579:268:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3891, + "nodeType": "ExpressionStatement", + "src": "41579:268:0" + }, + { + "expression": { + "id": 3896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3892, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3570, + "src": "41865:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "baseExpression": { + "id": 3893, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "41879:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3895, + "indexExpression": { + "id": 3894, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "41887:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41879:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41865:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3897, + "nodeType": "ExpressionStatement", + "src": "41865:24:0" + }, + { + "expression": { + "id": 3902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3898, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3572, + "src": "41907:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "baseExpression": { + "id": 3899, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3580, + "src": "41921:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3901, + "indexExpression": { + "id": 3900, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "41929:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "41921:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "41907:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3903, + "nodeType": "ExpressionStatement", + "src": "41907:24:0" + } + ] + }, + "id": 3905, + "nodeType": "IfStatement", + "src": "40556:1390:0", + "trueBody": { + "id": 3824, + "nodeType": "Block", + "src": "40605:356:0", + "statements": [ + { + "expression": { + "id": 3816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3790, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3580, + "src": "40623:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3792, + "indexExpression": { + "id": 3791, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "40631:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "40623:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3795, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "40690:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3796, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "40690:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 3797, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "40718:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3798, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "40718:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40690:53:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3800, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "40765:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "40765:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3802, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "40803:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3803, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "40803:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 3804, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "40818:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3805, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "40818:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40803:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3793, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "40653:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "40653:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "40653:195:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 3808, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "40851:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3810, + "indexExpression": { + "id": 3809, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "40867:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40851:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3811, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "40851:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "40653:223:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3813, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "40652:225:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3814, + "name": "weight10", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3624, + "src": "40896:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40652:252:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40623:281:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3817, + "nodeType": "ExpressionStatement", + "src": "40623:281:0" + }, + { + "expression": { + "id": 3822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3818, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3572, + "src": "40922:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "baseExpression": { + "id": 3819, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3580, + "src": "40936:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3821, + "indexExpression": { + "id": 3820, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "40944:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40936:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40922:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3823, + "nodeType": "ExpressionStatement", + "src": "40922:24:0" + } + ] + } + }, + "id": 3906, + "nodeType": "IfStatement", + "src": "39801:2145:0", + "trueBody": { + "id": 3783, + "nodeType": "Block", + "src": "39850:700:0", + "statements": [ + { + "expression": { + "id": 3775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 3735, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "39868:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3737, + "indexExpression": { + "id": 3736, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39876:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "39868:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 3744, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "40021:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3745, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "40021:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3746, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "40063:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3747, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "40063:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3748, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "40105:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3749, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "40105:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 3750, + "name": "sqrtPrice0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3618, + "src": "40120:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "40120:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40105:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3742, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "39976:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "39976:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39976:182:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3754, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "40184:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3755, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "40184:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 3756, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "40236:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3757, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "40236:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40184:77:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3759, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "40287:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "40287:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3740, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "39935:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "39935:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39935:399:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3762, + "name": "FixedPoint96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "40356:12:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$540_$", + "typeString": "type(library FixedPoint96)" + } + }, + "id": 3763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Q96", + "nodeType": "MemberAccess", + "referencedDeclaration": 539, + "src": "40356:16:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 3764, + "name": "sqrtCurrentTickPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3703, + "src": "40394:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3765, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "40394:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3738, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "39898:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "39898:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "39898:539:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 3767, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "40440:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3769, + "indexExpression": { + "id": 3768, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "40456:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40440:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3770, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "40440:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "39898:567:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3772, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "39897:569:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 3773, + "name": "weight00", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3621, + "src": "40485:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39897:596:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39868:625:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3776, + "nodeType": "ExpressionStatement", + "src": "39868:625:0" + }, + { + "expression": { + "id": 3781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3777, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3570, + "src": "40511:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "baseExpression": { + "id": 3778, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3577, + "src": "40525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3780, + "indexExpression": { + "id": 3779, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "40533:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "40525:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "40511:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3782, + "nodeType": "ExpressionStatement", + "src": "40511:24:0" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3671, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39143:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 3672, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3567, + "src": "39147:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "39147:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "39143:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3908, + "initializationExpression": { + "assignments": [ + 3668 + ], + "declarations": [ + { + "constant": false, + "id": 3668, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 3908, + "src": "39129:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 3667, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "39129:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "id": 3670, + "initialValue": { + "hexValue": "30", + "id": 3669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "39140:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "39129:12:0" + }, + "loopExpression": { + "expression": { + "id": 3676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "39171:3:0", + "subExpression": { + "id": 3675, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3668, + "src": "39171:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 3677, + "nodeType": "ExpressionStatement", + "src": "39171:3:0" + }, + "nodeType": "ForStatement", + "src": "39124:2832:0" + } + ] + }, + "id": 3910, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getWeightInfo", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3567, + "mutability": "mutable", + "name": "_cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 3910, + "src": "38082:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 3565, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "38082:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 3566, + "nodeType": "ArrayTypeName", + "src": "38082:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + } + ], + "src": "38081:41:0" + }, + "returnParameters": { + "id": 3581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3570, + "mutability": "mutable", + "name": "weightSum0", + "nodeType": "VariableDeclaration", + "scope": 3910, + "src": "38167:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3572, + "mutability": "mutable", + "name": "weightSum1", + "nodeType": "VariableDeclaration", + "scope": 3910, + "src": "38195:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3571, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38195:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3574, + "mutability": "mutable", + "name": "liquidityBefore", + "nodeType": "VariableDeclaration", + "scope": 3910, + "src": "38223:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 3573, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "38223:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3577, + "mutability": "mutable", + "name": "weight0", + "nodeType": "VariableDeclaration", + "scope": 3910, + "src": "38256:24:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3575, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38256:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3576, + "nodeType": "ArrayTypeName", + "src": "38256:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3580, + "mutability": "mutable", + "name": "weight1", + "nodeType": "VariableDeclaration", + "scope": 3910, + "src": "38290:24:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "38290:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3579, + "nodeType": "ArrayTypeName", + "src": "38290:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "38157:163:0" + }, + "scope": 4770, + "src": "38058:3904:0", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4147, + "nodeType": "Block", + "src": "42307:2240:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3934, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "42321:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "42321:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 3936, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42347:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "42321:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3943, + "nodeType": "IfStatement", + "src": "42317:89:0", + "trueBody": { + "id": 3942, + "nodeType": "Block", + "src": "42350:56:0", + "statements": [ + { + "expression": { + "components": [ + { + "id": 3938, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "42372:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3939, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3921, + "src": "42384:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 3940, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "42371:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 3933, + "id": 3941, + "nodeType": "Return", + "src": "42364:31:0" + } + ] + } + }, + { + "assignments": [ + 3945 + ], + "declarations": [ + { + "constant": false, + "id": 3945, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 4147, + "src": "42416:25:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair" + }, + "typeName": { + "id": 3944, + "name": "UintPair", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1302, + "src": "42416:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_storage_ptr", + "typeString": "struct ICellarPoolShare.UintPair" + } + }, + "visibility": "internal" + } + ], + "id": 3946, + "nodeType": "VariableDeclarationStatement", + "src": "42416:25:0" + }, + { + "assignments": [ + 3948, + null, + null, + null, + null, + null, + null + ], + "declarations": [ + { + "constant": false, + "id": 3948, + "mutability": "mutable", + "name": "sqrtPriceX96", + "nodeType": "VariableDeclaration", + "scope": 4147, + "src": "42452:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 3947, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "42452:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + }, + null, + null, + null, + null, + null, + null + ], + "id": 3961, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 3954, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "42585:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3955, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "42609:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3956, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "42633:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + ], + "expression": { + "arguments": [ + { + "id": 3951, + "name": "UNISWAPV3FACTORY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1448, + "src": "42542:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3950, + "name": "IUniswapV3Factory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 239, + "src": "42524:17:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Factory_$239_$", + "typeString": "type(contract IUniswapV3Factory)" + } + }, + "id": 3952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42524:35:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Factory_$239", + "typeString": "contract IUniswapV3Factory" + } + }, + "id": 3953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getPool", + "nodeType": "MemberAccess", + "referencedDeclaration": 238, + "src": "42524:43:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$_t_uint24_$returns$_t_address_$", + "typeString": "function (address,address,uint24) view external returns (address)" + } + }, + "id": 3957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42524:131:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3949, + "name": "IUniswapV3Pool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 257, + "src": "42496:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapV3Pool_$257_$", + "typeString": "type(contract IUniswapV3Pool)" + } + }, + "id": 3958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42496:169:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapV3Pool_$257", + "typeString": "contract IUniswapV3Pool" + } + }, + "id": 3959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "slot0", + "nodeType": "MemberAccess", + "referencedDeclaration": 256, + "src": "42496:184:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "id": 3960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42496:186:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", + "typeString": "tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "42451:231:0" + }, + { + "expression": { + "id": 3999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3962, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "42692:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 3964, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "42692:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 3967, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3948, + "src": "42759:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 3970, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "42813:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3972, + "indexExpression": { + "hexValue": "30", + "id": 3971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42829:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "42813:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3973, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "42813:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 3968, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "42785:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 3969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "42785:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 3974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42785:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 3977, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "42884:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 3979, + "indexExpression": { + "hexValue": "30", + "id": 3978, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42900:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "42884:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 3980, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "42884:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 3975, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "42856:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 3976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "42856:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 3981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42856:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "arguments": [ + { + "id": 3984, + "name": "amount0Desired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3915, + "src": "42943:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 3985, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3924, + "src": "42959:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3987, + "indexExpression": { + "hexValue": "30", + "id": 3986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "42967:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "42959:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3988, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "42971:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3982, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "42927:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "42927:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42927:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 3992, + "name": "amount1Desired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3917, + "src": "43012:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 3993, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3927, + "src": "43028:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 3995, + "indexExpression": { + "hexValue": "30", + "id": 3994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43036:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43028:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 3996, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3921, + "src": "43040:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3990, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "42996:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 3991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "42996:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 3997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42996:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 3965, + "name": "LiquidityAmounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "42706:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LiquidityAmounts_$1230_$", + "typeString": "type(library LiquidityAmounts)" + } + }, + "id": 3966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getLiquidityForAmounts", + "nodeType": "MemberAccess", + "referencedDeclaration": 1229, + "src": "42706:39:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint256_$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint160,uint160,uint160,uint256,uint256) pure returns (uint128)" + } + }, + "id": 3998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "42706:355:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "42692:369:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4000, + "nodeType": "ExpressionStatement", + "src": "42692:369:0" + }, + { + "assignments": [ + 4002 + ], + "declarations": [ + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "tickLength", + "nodeType": "VariableDeclaration", + "scope": 4147, + "src": "43071:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "43071:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4007, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4003, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43092:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "43092:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 4005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43117:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "43092:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "43071:47:0" + }, + { + "expression": { + "id": 4045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4008, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "43128:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4010, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "43128:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4013, + "name": "sqrtPriceX96", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3948, + "src": "43195:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 4016, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43249:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4018, + "indexExpression": { + "id": 4017, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "43265:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43249:27:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4019, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "43249:37:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 4014, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "43221:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 4015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "43221:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 4020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43221:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 4023, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43329:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4025, + "indexExpression": { + "id": 4024, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "43345:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43329:27:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4026, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "43329:37:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + ], + "expression": { + "id": 4021, + "name": "TickMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1048, + "src": "43301:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_TickMath_$1048_$", + "typeString": "type(library TickMath)" + } + }, + "id": 4022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getSqrtRatioAtTick", + "nodeType": "MemberAccess", + "referencedDeclaration": 1047, + "src": "43301:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", + "typeString": "function (int24) pure returns (uint160)" + } + }, + "id": 4027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43301:66:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + { + "arguments": [ + { + "id": 4030, + "name": "amount0Desired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3915, + "src": "43397:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 4031, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3924, + "src": "43413:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 4033, + "indexExpression": { + "id": 4032, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "43421:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43413:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4034, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "43434:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4028, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "43381:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "43381:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43381:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 4038, + "name": "amount1Desired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3917, + "src": "43475:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 4039, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3927, + "src": "43491:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 4041, + "indexExpression": { + "id": 4040, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "43499:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43491:19:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4042, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3921, + "src": "43512:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4036, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "43459:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "43459:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43459:64:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4011, + "name": "LiquidityAmounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "43142:16:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LiquidityAmounts_$1230_$", + "typeString": "type(library LiquidityAmounts)" + } + }, + "id": 4012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "getLiquidityForAmounts", + "nodeType": "MemberAccess", + "referencedDeclaration": 1229, + "src": "43142:39:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint160_$_t_uint256_$_t_uint256_$returns$_t_uint128_$", + "typeString": "function (uint160,uint160,uint160,uint256,uint256) pure returns (uint128)" + } + }, + "id": 4044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43142:391:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "43128:405:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4046, + "nodeType": "ExpressionStatement", + "src": "43128:405:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4047, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "43561:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4048, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "43561:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4049, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43575:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4051, + "indexExpression": { + "id": 4050, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "43591:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43575:27:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4052, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "43575:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "43561:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4054, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "43624:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4055, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "43624:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4056, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43638:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4058, + "indexExpression": { + "hexValue": "30", + "id": 4057, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43654:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43638:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "43638:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "43624:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "43561:102:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4145, + "nodeType": "Block", + "src": "44106:435:0", + "statements": [ + { + "expression": { + "id": 4106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4104, + "name": "newWeightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3930, + "src": "44120:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4105, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "44136:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "44120:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4107, + "nodeType": "ExpressionStatement", + "src": "44120:26:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4108, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "44164:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4109, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "44164:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4110, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "44178:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4112, + "indexExpression": { + "id": 4111, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "44194:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "44178:27:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4113, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "44178:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "44164:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44215:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "44164:52:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4143, + "nodeType": "Block", + "src": "44481:50:0", + "statements": [ + { + "expression": { + "id": 4141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4139, + "name": "newWeightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3932, + "src": "44499:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 4140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44515:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "44499:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4142, + "nodeType": "ExpressionStatement", + "src": "44499:17:0" + } + ] + }, + "id": 4144, + "nodeType": "IfStatement", + "src": "44160:371:0", + "trueBody": { + "id": 4138, + "nodeType": "Block", + "src": "44218:245:0", + "statements": [ + { + "expression": { + "id": 4136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4117, + "name": "newWeightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3932, + "src": "44236:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4120, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3921, + "src": "44289:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4121, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "44321:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4122, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "44321:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4123, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "44335:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4125, + "indexExpression": { + "hexValue": "30", + "id": 4124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44351:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "44335:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4126, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "44335:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "44321:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4128, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "44382:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4129, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "44382:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4130, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "44396:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4132, + "indexExpression": { + "id": 4131, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "44412:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "44396:27:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "44396:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "44382:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4118, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "44252:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "44252:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "44252:196:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "44236:212:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4137, + "nodeType": "ExpressionStatement", + "src": "44236:212:0" + } + ] + } + } + ] + }, + "id": 4146, + "nodeType": "IfStatement", + "src": "43544:997:0", + "trueBody": { + "id": 4103, + "nodeType": "Block", + "src": "43674:426:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4062, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "43692:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4063, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "43692:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4064, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43706:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4066, + "indexExpression": { + "hexValue": "30", + "id": 4065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43722:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43706:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4067, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "43706:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "43692:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43734:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "43692:43:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4097, + "nodeType": "Block", + "src": "44000:50:0", + "statements": [ + { + "expression": { + "id": 4095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4093, + "name": "newWeightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3930, + "src": "44018:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 4094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "44034:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "44018:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4096, + "nodeType": "ExpressionStatement", + "src": "44018:17:0" + } + ] + }, + "id": 4098, + "nodeType": "IfStatement", + "src": "43688:362:0", + "trueBody": { + "id": 4092, + "nodeType": "Block", + "src": "43737:245:0", + "statements": [ + { + "expression": { + "id": 4090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4071, + "name": "newWeightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3930, + "src": "43755:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4074, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "43808:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4075, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "43840:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "a", + "nodeType": "MemberAccess", + "referencedDeclaration": 1299, + "src": "43840:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4077, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43854:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4079, + "indexExpression": { + "id": 4078, + "name": "tickLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4002, + "src": "43870:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43854:27:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4080, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "43854:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "43840:48:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4082, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3945, + "src": "43910:9:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintPair_$1302_memory_ptr", + "typeString": "struct ICellarPoolShare.UintPair memory" + } + }, + "id": 4083, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "b", + "nodeType": "MemberAccess", + "referencedDeclaration": 1301, + "src": "43910:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "expression": { + "baseExpression": { + "id": 4084, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3913, + "src": "43924:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4086, + "indexExpression": { + "hexValue": "30", + "id": 4085, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "43940:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "43924:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4087, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "weight", + "nodeType": "MemberAccess", + "referencedDeclaration": 1296, + "src": "43924:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "43910:39:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4072, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "43771:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "43771:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "43771:196:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "43755:212:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4091, + "nodeType": "ExpressionStatement", + "src": "43755:212:0" + } + ] + } + }, + { + "expression": { + "id": 4101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4099, + "name": "newWeightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3932, + "src": "44063:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4100, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3921, + "src": "44079:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "44063:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4102, + "nodeType": "ExpressionStatement", + "src": "44063:26:0" + } + ] + } + } + ] + }, + "id": 4148, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_modifyWeightInfo", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3928, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3913, + "mutability": "mutable", + "name": "_cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42004:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 3911, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "42004:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 3912, + "nodeType": "ArrayTypeName", + "src": "42004:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3915, + "mutability": "mutable", + "name": "amount0Desired", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42053:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3914, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42053:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3917, + "mutability": "mutable", + "name": "amount1Desired", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42085:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3916, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42085:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3919, + "mutability": "mutable", + "name": "weightSum0", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42117:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42117:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3921, + "mutability": "mutable", + "name": "weightSum1", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42145:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3920, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42145:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3924, + "mutability": "mutable", + "name": "weight0", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42173:24:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42173:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3923, + "nodeType": "ArrayTypeName", + "src": "42173:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3927, + "mutability": "mutable", + "name": "weight1", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42207:24:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 3925, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42207:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3926, + "nodeType": "ArrayTypeName", + "src": "42207:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "41994:243:0" + }, + "returnParameters": { + "id": 3933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3930, + "mutability": "mutable", + "name": "newWeightSum0", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42261:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3929, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42261:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3932, + "mutability": "mutable", + "name": "newWeightSum1", + "nodeType": "VariableDeclaration", + "scope": 4148, + "src": "42284:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "42284:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "42260:46:0" + }, + "scope": 4770, + "src": "41968:2579:0", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4565, + "nodeType": "Block", + "src": "44766:4849:0", + "statements": [ + { + "assignments": [ + 4164 + ], + "declarations": [ + { + "constant": false, + "id": 4164, + "mutability": "mutable", + "name": "_cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 4565, + "src": "44776:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 4162, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "44776:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 4163, + "nodeType": "ArrayTypeName", + "src": "44776:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + } + ], + "id": 4166, + "initialValue": { + "id": 4165, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "44818:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "44776:56:0" + }, + { + "expression": { + "arguments": [ + { + "id": 4171, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "44882:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 4172, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "44922:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4173, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "44922:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 4168, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "44849:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4167, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "44842:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 4169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "44842:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 4170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "44842:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "44842:117:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4175, + "nodeType": "ExpressionStatement", + "src": "44842:117:0" + }, + { + "expression": { + "arguments": [ + { + "id": 4180, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "45009:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 4181, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "45049:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "45049:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 4177, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "44976:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4176, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "44969:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 4178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "44969:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 4179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "44969:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "44969:117:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4184, + "nodeType": "ExpressionStatement", + "src": "44969:117:0" + }, + { + "assignments": [ + 4186 + ], + "declarations": [ + { + "constant": false, + "id": 4186, + "mutability": "mutable", + "name": "weightSum0", + "nodeType": "VariableDeclaration", + "scope": 4565, + "src": "45097:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4185, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45097:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4187, + "nodeType": "VariableDeclarationStatement", + "src": "45097:18:0" + }, + { + "assignments": [ + 4189 + ], + "declarations": [ + { + "constant": false, + "id": 4189, + "mutability": "mutable", + "name": "weightSum1", + "nodeType": "VariableDeclaration", + "scope": 4565, + "src": "45125:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45125:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4190, + "nodeType": "VariableDeclarationStatement", + "src": "45125:18:0" + }, + { + "assignments": [ + 4195 + ], + "declarations": [ + { + "constant": false, + "id": 4195, + "mutability": "mutable", + "name": "weight0", + "nodeType": "VariableDeclaration", + "scope": 4565, + "src": "45153:24:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45153:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4194, + "nodeType": "ArrayTypeName", + "src": "45153:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 4202, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4199, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "45194:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "45194:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "45180:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 4196, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45184:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4197, + "nodeType": "ArrayTypeName", + "src": "45184:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 4201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "45180:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "45153:64:0" + }, + { + "assignments": [ + 4207 + ], + "declarations": [ + { + "constant": false, + "id": 4207, + "mutability": "mutable", + "name": "weight1", + "nodeType": "VariableDeclaration", + "scope": 4565, + "src": "45227:24:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45227:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4206, + "nodeType": "ArrayTypeName", + "src": "45227:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 4214, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4211, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "45268:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "45268:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "45254:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 4208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "45258:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4209, + "nodeType": "ArrayTypeName", + "src": "45258:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 4213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "45254:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "45227:64:0" + }, + { + "expression": { + "id": 4224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 4215, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "45312:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4216, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "45332:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4217, + "name": "liquidityBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4157, + "src": "45352:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "id": 4218, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4195, + "src": "45377:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 4219, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4207, + "src": "45394:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "id": 4220, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "45302:109:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint128,uint256[] memory,uint256[] memory)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4222, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "45429:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + ], + "id": 4221, + "name": "_getWeightInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3910, + "src": "45414:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint128_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (struct ICellarPoolShare.CellarTickInfo memory[] memory) view returns (uint256,uint256,uint128,uint256[] memory,uint256[] memory)" + } + }, + "id": 4223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "45414:31:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint128_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "tuple(uint256,uint256,uint128,uint256[] memory,uint256[] memory)" + } + }, + "src": "45302:143:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4225, + "nodeType": "ExpressionStatement", + "src": "45302:143:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4226, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "45459:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "45472:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "45459:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4229, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "45477:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "45490:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "45477:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "45459:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4250, + "nodeType": "IfStatement", + "src": "45455:350:0", + "trueBody": { + "id": 4249, + "nodeType": "Block", + "src": "45493:312:0", + "statements": [ + { + "expression": { + "id": 4247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 4233, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "45508:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4234, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "45520:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4235, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "45507:24:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 4237, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "45569:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + { + "expression": { + "id": 4238, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "45602:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4239, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "45602:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 4240, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "45647:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4241, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "45647:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4242, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "45692:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4243, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "45720:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4244, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4195, + "src": "45748:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "id": 4245, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4207, + "src": "45773:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 4236, + "name": "_modifyWeightInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4148, + "src": "45534:17:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (struct ICellarPoolShare.CellarTickInfo memory[] memory,uint256,uint256,uint256,uint256,uint256[] memory,uint256[] memory) view returns (uint256,uint256)" + } + }, + "id": 4246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "45534:260:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "45507:287:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4248, + "nodeType": "ExpressionStatement", + "src": "45507:287:0" + } + ] + } + }, + { + "body": { + "id": 4547, + "nodeType": "Block", + "src": "45867:3608:0", + "statements": [ + { + "assignments": [ + 4265 + ], + "declarations": [ + { + "constant": false, + "id": 4265, + "mutability": "mutable", + "name": "mintParams", + "nodeType": "VariableDeclaration", + "scope": 4547, + "src": "45881:56:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams" + }, + "typeName": { + "id": 4264, + "name": "INonfungiblePositionManager.MintParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 92, + "src": "45881:38:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_storage_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams" + } + }, + "visibility": "internal" + } + ], + "id": 4290, + "initialValue": { + "arguments": [ + { + "id": 4268, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "46013:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4269, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "46041:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4270, + "name": "feeLevel", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "46066:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "expression": { + "baseExpression": { + "id": 4271, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "46099:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4273, + "indexExpression": { + "id": 4272, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "46115:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "46099:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4274, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickLower", + "nodeType": "MemberAccess", + "referencedDeclaration": 1294, + "src": "46099:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + { + "expression": { + "baseExpression": { + "id": 4275, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "46152:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4277, + "indexExpression": { + "id": 4276, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "46168:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "46152:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4278, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tickUpper", + "nodeType": "MemberAccess", + "referencedDeclaration": 1292, + "src": "46152:28:0", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + { + "hexValue": "30", + "id": 4279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46210:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 4280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46241:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 4281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46268:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 4282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46295:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "arguments": [ + { + "id": 4285, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "46329:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 4284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "46321:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "46321:7:0", + "typeDescriptions": {} + } + }, + "id": 4286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "46321:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "id": 4287, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "46358:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4288, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 1276, + "src": "46358:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4266, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "45952:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "MintParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 92, + "src": "45952:38:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MintParams_$92_storage_ptr_$", + "typeString": "type(struct INonfungiblePositionManager.MintParams storage pointer)" + } + }, + "id": 4289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "token0", + "token1", + "fee", + "tickLower", + "tickUpper", + "amount0Desired", + "amount1Desired", + "amount0Min", + "amount1Min", + "recipient", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "45952:442:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "45881:513:0" + }, + { + "assignments": [ + 4294 + ], + "declarations": [ + { + "constant": false, + "id": 4294, + "mutability": "mutable", + "name": "increaseLiquidityParams", + "nodeType": "VariableDeclaration", + "scope": 4547, + "src": "46409:94:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams" + }, + "typeName": { + "id": 4293, + "name": "INonfungiblePositionManager.IncreaseLiquidityParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 105, + "src": "46409:51:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_storage_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams" + } + }, + "visibility": "internal" + } + ], + "id": 4308, + "initialValue": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 4297, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "46605:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4299, + "indexExpression": { + "id": 4298, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "46621:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "46605:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4300, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "46605:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + { + "hexValue": "30", + "id": 4301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46661:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 4302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46692:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 4303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46719:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 4304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46746:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "expression": { + "id": 4305, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "46771:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4306, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 1276, + "src": "46771:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4295, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "46530:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "IncreaseLiquidityParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 105, + "src": "46530:51:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_IncreaseLiquidityParams_$105_storage_ptr_$", + "typeString": "type(struct INonfungiblePositionManager.IncreaseLiquidityParams storage pointer)" + } + }, + "id": 4307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenId", + "amount0Desired", + "amount1Desired", + "amount0Min", + "amount1Min", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "46530:277:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "46409:398:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4309, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "46825:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "46838:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "46825:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4355, + "nodeType": "IfStatement", + "src": "46821:588:0", + "trueBody": { + "id": 4354, + "nodeType": "Block", + "src": "46841:568:0", + "statements": [ + { + "expression": { + "id": 4324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4312, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "46859:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4314, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 81, + "src": "46859:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 4317, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "46924:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4318, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1266, + "src": "46924:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 4319, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4195, + "src": "46973:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 4321, + "indexExpression": { + "id": 4320, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "46981:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "46973:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4322, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "47005:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4315, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "46887:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "46887:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "46887:146:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "46859:174:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4325, + "nodeType": "ExpressionStatement", + "src": "46859:174:0" + }, + { + "expression": { + "id": 4331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4326, + "name": "increaseLiquidityParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "47051:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams memory" + } + }, + "id": 4328, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 96, + "src": "47051:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 4329, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "47092:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4330, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 81, + "src": "47092:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47051:83:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4332, + "nodeType": "ExpressionStatement", + "src": "47051:83:0" + }, + { + "expression": { + "id": 4345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4333, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "47152:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4335, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 85, + "src": "47152:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 4338, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "47213:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4339, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1270, + "src": "47213:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 4340, + "name": "weight0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4195, + "src": "47258:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 4342, + "indexExpression": { + "id": 4341, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "47266:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "47258:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4343, + "name": "weightSum0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4186, + "src": "47290:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4336, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "47176:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "47176:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "47176:142:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47152:166:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4346, + "nodeType": "ExpressionStatement", + "src": "47152:166:0" + }, + { + "expression": { + "id": 4352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4347, + "name": "increaseLiquidityParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "47336:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams memory" + } + }, + "id": 4349, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 100, + "src": "47336:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 4350, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "47373:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4351, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 85, + "src": "47373:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47336:58:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4353, + "nodeType": "ExpressionStatement", + "src": "47336:58:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4356, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "47426:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "47439:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "47426:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4402, + "nodeType": "IfStatement", + "src": "47422:588:0", + "trueBody": { + "id": 4401, + "nodeType": "Block", + "src": "47442:568:0", + "statements": [ + { + "expression": { + "id": 4371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4359, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "47460:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4361, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 83, + "src": "47460:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 4364, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "47525:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4365, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 1268, + "src": "47525:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 4366, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4207, + "src": "47574:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 4368, + "indexExpression": { + "id": 4367, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "47582:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "47574:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4369, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "47606:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4362, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "47488:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "47488:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "47488:146:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47460:174:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4372, + "nodeType": "ExpressionStatement", + "src": "47460:174:0" + }, + { + "expression": { + "id": 4378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4373, + "name": "increaseLiquidityParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "47652:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams memory" + } + }, + "id": 4375, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 98, + "src": "47652:38:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 4376, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "47693:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 83, + "src": "47693:42:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47652:83:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4379, + "nodeType": "ExpressionStatement", + "src": "47652:83:0" + }, + { + "expression": { + "id": 4392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4380, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "47753:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4382, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "47753:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 4385, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4150, + "src": "47814:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams memory" + } + }, + "id": 4386, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 1272, + "src": "47814:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "id": 4387, + "name": "weight1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4207, + "src": "47859:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 4389, + "indexExpression": { + "id": 4388, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "47867:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "47859:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4390, + "name": "weightSum1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4189, + "src": "47891:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4383, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "47777:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "47777:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "47777:142:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47753:166:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4393, + "nodeType": "ExpressionStatement", + "src": "47753:166:0" + }, + { + "expression": { + "id": 4399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4394, + "name": "increaseLiquidityParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "47937:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams memory" + } + }, + "id": 4396, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 102, + "src": "47937:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 4397, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "47974:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4398, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Min", + "nodeType": "MemberAccess", + "referencedDeclaration": 87, + "src": "47974:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "47937:58:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4400, + "nodeType": "ExpressionStatement", + "src": "47937:58:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4403, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "48044:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4404, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 81, + "src": "48044:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48072:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "48044:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 4407, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "48077:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + }, + "id": 4408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1Desired", + "nodeType": "MemberAccess", + "referencedDeclaration": 83, + "src": "48077:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48105:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "48077:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "48044:62:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4546, + "nodeType": "IfStatement", + "src": "48023:1442:0", + "trueBody": { + "id": 4545, + "nodeType": "Block", + "src": "48121:1344:0", + "statements": [ + { + "assignments": [ + 4413 + ], + "declarations": [ + { + "constant": false, + "id": 4413, + "mutability": "mutable", + "name": "mintResult", + "nodeType": "VariableDeclaration", + "scope": 4545, + "src": "48139:28:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult" + }, + "typeName": { + "id": 4412, + "name": "MintResult", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1264, + "src": "48139:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_storage_ptr", + "typeString": "struct ICellarPoolShare.MintResult" + } + }, + "visibility": "internal" + } + ], + "id": 4414, + "nodeType": "VariableDeclarationStatement", + "src": "48139:28:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "id": 4420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "id": 4415, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "48189:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4417, + "indexExpression": { + "id": 4416, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "48205:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "48189:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4418, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "48189:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "48219:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "48189:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4543, + "nodeType": "Block", + "src": "48897:554:0", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 4523, + "nodeType": "Block", + "src": "49088:172:0", + "statements": [ + { + "expression": { + "id": 4509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4505, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "49114:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4507, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "liquidity", + "nodeType": "MemberAccess", + "referencedDeclaration": 1259, + "src": "49114:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4508, + "name": "r1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4499, + "src": "49137:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "49114:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 4510, + "nodeType": "ExpressionStatement", + "src": "49114:25:0" + }, + { + "expression": { + "id": 4515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4511, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "49165:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4513, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount0", + "nodeType": "MemberAccess", + "referencedDeclaration": 1261, + "src": "49165:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4514, + "name": "r2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4501, + "src": "49186:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49165:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4516, + "nodeType": "ExpressionStatement", + "src": "49165:23:0" + }, + { + "expression": { + "id": 4521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4517, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "49214:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4519, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount1", + "nodeType": "MemberAccess", + "referencedDeclaration": 1263, + "src": "49214:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4520, + "name": "r3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4503, + "src": "49235:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49214:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4522, + "nodeType": "ExpressionStatement", + "src": "49214:23:0" + } + ] + }, + "errorName": "", + "id": 4524, + "nodeType": "TryCatchClause", + "parameters": { + "id": 4504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4499, + "mutability": "mutable", + "name": "r1", + "nodeType": "VariableDeclaration", + "scope": 4524, + "src": "49052:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4498, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "49052:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4501, + "mutability": "mutable", + "name": "r2", + "nodeType": "VariableDeclaration", + "scope": 4524, + "src": "49064:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49064:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4503, + "mutability": "mutable", + "name": "r3", + "nodeType": "VariableDeclaration", + "scope": 4524, + "src": "49076:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49076:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "49051:36:0" + }, + "src": "49043:217:0" + }, + { + "block": { + "id": 4525, + "nodeType": "Block", + "src": "49267:2:0", + "statements": [] + }, + "errorName": "", + "id": 4526, + "nodeType": "TryCatchClause", + "src": "49261:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "id": 4496, + "name": "increaseLiquidityParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "49018:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_IncreaseLiquidityParams_$105_memory_ptr", + "typeString": "struct INonfungiblePositionManager.IncreaseLiquidityParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 4493, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "48951:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4492, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "48923:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "48923:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 4495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "increaseLiquidity", + "nodeType": "MemberAccess", + "referencedDeclaration": 149, + "src": "48923:94:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_IncreaseLiquidityParams_$105_memory_ptr_$returns$_t_uint128_$_t_uint256_$_t_uint256_$", + "typeString": "function (struct INonfungiblePositionManager.IncreaseLiquidityParams memory) payable external returns (uint128,uint256,uint256)" + } + }, + "id": 4497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "48923:119:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint128_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint128,uint256,uint256)" + } + }, + "id": 4527, + "nodeType": "TryStatement", + "src": "48919:350:0" + }, + { + "expression": { + "id": 4531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4528, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4153, + "src": "49290:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 4529, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "49303:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4530, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0", + "nodeType": "MemberAccess", + "referencedDeclaration": 1261, + "src": "49303:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49290:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4532, + "nodeType": "ExpressionStatement", + "src": "49290:31:0" + }, + { + "expression": { + "id": 4536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4533, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4155, + "src": "49343:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 4534, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "49356:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4535, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1", + "nodeType": "MemberAccess", + "referencedDeclaration": 1263, + "src": "49356:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49343:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4537, + "nodeType": "ExpressionStatement", + "src": "49343:31:0" + }, + { + "expression": { + "id": 4541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4538, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4159, + "src": "49396:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 4539, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "49412:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4540, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "liquidity", + "nodeType": "MemberAccess", + "referencedDeclaration": 1259, + "src": "49412:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "49396:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 4542, + "nodeType": "ExpressionStatement", + "src": "49396:36:0" + } + ] + }, + "id": 4544, + "nodeType": "IfStatement", + "src": "48185:1266:0", + "trueBody": { + "id": 4491, + "nodeType": "Block", + "src": "48222:669:0", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 4460, + "nodeType": "Block", + "src": "48400:221:0", + "statements": [ + { + "expression": { + "id": 4440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4436, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48426:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4438, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1257, + "src": "48426:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4439, + "name": "r1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4428, + "src": "48447:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "48426:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4441, + "nodeType": "ExpressionStatement", + "src": "48426:23:0" + }, + { + "expression": { + "id": 4446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4442, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48475:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4444, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "liquidity", + "nodeType": "MemberAccess", + "referencedDeclaration": 1259, + "src": "48475:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4445, + "name": "r2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4430, + "src": "48498:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "48475:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 4447, + "nodeType": "ExpressionStatement", + "src": "48475:25:0" + }, + { + "expression": { + "id": 4452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4448, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48526:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4450, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount0", + "nodeType": "MemberAccess", + "referencedDeclaration": 1261, + "src": "48526:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4451, + "name": "r3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4432, + "src": "48547:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "48526:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4453, + "nodeType": "ExpressionStatement", + "src": "48526:23:0" + }, + { + "expression": { + "id": 4458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 4454, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48575:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "amount1", + "nodeType": "MemberAccess", + "referencedDeclaration": 1263, + "src": "48575:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4457, + "name": "r4", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "48596:2:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "48575:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4459, + "nodeType": "ExpressionStatement", + "src": "48575:23:0" + } + ] + }, + "errorName": "", + "id": 4461, + "nodeType": "TryCatchClause", + "parameters": { + "id": 4435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4428, + "mutability": "mutable", + "name": "r1", + "nodeType": "VariableDeclaration", + "scope": 4461, + "src": "48352:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48352:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4430, + "mutability": "mutable", + "name": "r2", + "nodeType": "VariableDeclaration", + "scope": 4461, + "src": "48364:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4429, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "48364:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4432, + "mutability": "mutable", + "name": "r3", + "nodeType": "VariableDeclaration", + "scope": 4461, + "src": "48376:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48376:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4434, + "mutability": "mutable", + "name": "r4", + "nodeType": "VariableDeclaration", + "scope": 4461, + "src": "48388:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "48388:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "48351:48:0" + }, + "src": "48343:278:0" + }, + { + "block": { + "id": 4462, + "nodeType": "Block", + "src": "48628:2:0", + "statements": [] + }, + "errorName": "", + "id": 4463, + "nodeType": "TryCatchClause", + "src": "48622:8:0" + } + ], + "externalCall": { + "arguments": [ + { + "id": 4425, + "name": "mintParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4265, + "src": "48331:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_MintParams_$92_memory_ptr", + "typeString": "struct INonfungiblePositionManager.MintParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 4422, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "48277:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4421, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "48249:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "48249:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 4424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 138, + "src": "48249:81:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_MintParams_$92_memory_ptr_$returns$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", + "typeString": "function (struct INonfungiblePositionManager.MintParams memory) payable external returns (uint256,uint128,uint256,uint256)" + } + }, + "id": 4426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "48249:93:0", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint128_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint128,uint256,uint256)" + } + }, + "id": 4464, + "nodeType": "TryStatement", + "src": "48245:385:0" + }, + { + "expression": { + "id": 4474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 4465, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "48652:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "id": 4467, + "indexExpression": { + "id": 4466, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "48667:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "48652:17:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref" + } + }, + "id": 4468, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "48652:25:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 4471, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48688:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4472, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1257, + "src": "48688:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "48680:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + }, + "typeName": { + "id": 4469, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "48680:7:0", + "typeDescriptions": {} + } + }, + "id": 4473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "48680:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "src": "48652:55:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "id": 4475, + "nodeType": "ExpressionStatement", + "src": "48652:55:0" + }, + { + "expression": { + "id": 4479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4476, + "name": "inAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4153, + "src": "48730:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 4477, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48743:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4478, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount0", + "nodeType": "MemberAccess", + "referencedDeclaration": 1261, + "src": "48743:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "48730:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4480, + "nodeType": "ExpressionStatement", + "src": "48730:31:0" + }, + { + "expression": { + "id": 4484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4481, + "name": "inAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4155, + "src": "48783:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 4482, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48796:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4483, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "amount1", + "nodeType": "MemberAccess", + "referencedDeclaration": 1263, + "src": "48796:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "48783:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4485, + "nodeType": "ExpressionStatement", + "src": "48783:31:0" + }, + { + "expression": { + "id": 4489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4486, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4159, + "src": "48836:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "expression": { + "id": 4487, + "name": "mintResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4413, + "src": "48852:10:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MintResult_$1264_memory_ptr", + "typeString": "struct ICellarPoolShare.MintResult memory" + } + }, + "id": 4488, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "liquidity", + "nodeType": "MemberAccess", + "referencedDeclaration": 1259, + "src": "48852:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "48836:36:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 4490, + "nodeType": "ExpressionStatement", + "src": "48836:36:0" + } + ] + } + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4255, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "45834:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 4256, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4164, + "src": "45838:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "45838:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "45834:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4548, + "initializationExpression": { + "assignments": [ + 4252 + ], + "declarations": [ + { + "constant": false, + "id": 4252, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 4548, + "src": "45820:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4251, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "45820:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "id": 4254, + "initialValue": { + "hexValue": "30", + "id": 4253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "45831:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "45820:12:0" + }, + "loopExpression": { + "expression": { + "id": 4260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "45862:3:0", + "subExpression": { + "id": 4259, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "45862:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 4261, + "nodeType": "ExpressionStatement", + "src": "45862:3:0" + }, + "nodeType": "ForStatement", + "src": "45815:3660:0" + }, + { + "expression": { + "arguments": [ + { + "id": 4553, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "49511:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 4554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49539:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "arguments": [ + { + "id": 4550, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "49491:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4549, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "49484:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 4551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "49484:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 4552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "49484:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "49484:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4556, + "nodeType": "ExpressionStatement", + "src": "49484:57:0" + }, + { + "expression": { + "arguments": [ + { + "id": 4561, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "49578:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 4562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49606:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "arguments": [ + { + "id": 4558, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "49558:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4557, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "49551:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 4559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "49551:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 4560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 499, + "src": "49551:26:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4563, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "49551:57:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4564, + "nodeType": "ExpressionStatement", + "src": "49551:57:0" + } + ] + }, + "id": 4566, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addLiquidity", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4150, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "44576:35:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + }, + "typeName": { + "id": 4149, + "name": "CellarAddParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1277, + "src": "44576:15:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarAddParams_$1277_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarAddParams" + } + }, + "visibility": "internal" + } + ], + "src": "44575:37:0" + }, + "returnParameters": { + "id": 4160, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4153, + "mutability": "mutable", + "name": "inAmount0", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "44648:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "44648:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4155, + "mutability": "mutable", + "name": "inAmount1", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "44675:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4154, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "44675:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4157, + "mutability": "mutable", + "name": "liquidityBefore", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "44702:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4156, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "44702:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4159, + "mutability": "mutable", + "name": "liquiditySum", + "nodeType": "VariableDeclaration", + "scope": 4566, + "src": "44735:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4158, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "44735:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "44638:123:0" + }, + "scope": 4770, + "src": "44553:5062:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4754, + "nodeType": "Block", + "src": "49809:2031:0", + "statements": [ + { + "assignments": [ + 4580 + ], + "declarations": [ + { + "constant": false, + "id": 4580, + "mutability": "mutable", + "name": "_cellarTickInfo", + "nodeType": "VariableDeclaration", + "scope": 4754, + "src": "49819:39:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + }, + "typeName": { + "baseType": { + "id": 4578, + "name": "CellarTickInfo", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1297, + "src": "49819:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo" + } + }, + "id": 4579, + "nodeType": "ArrayTypeName", + "src": "49819:16:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo[]" + } + }, + "visibility": "internal" + } + ], + "id": 4582, + "initialValue": { + "id": 4581, + "name": "cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "49861:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_storage_$dyn_storage", + "typeString": "struct ICellarPoolShare.CellarTickInfo storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "49819:56:0" + }, + { + "assignments": [ + 4584 + ], + "declarations": [ + { + "constant": false, + "id": 4584, + "mutability": "mutable", + "name": "fee0", + "nodeType": "VariableDeclaration", + "scope": 4754, + "src": "49885:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49885:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4585, + "nodeType": "VariableDeclarationStatement", + "src": "49885:12:0" + }, + { + "assignments": [ + 4587 + ], + "declarations": [ + { + "constant": false, + "id": 4587, + "mutability": "mutable", + "name": "fee1", + "nodeType": "VariableDeclaration", + "scope": 4754, + "src": "49907:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49907:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4588, + "nodeType": "VariableDeclarationStatement", + "src": "49907:12:0" + }, + { + "body": { + "id": 4708, + "nodeType": "Block", + "src": "49981:1587:0", + "statements": [ + { + "assignments": [ + null, + null, + null, + null, + null, + null, + null, + 4601, + null, + null, + null, + null + ], + "declarations": [ + null, + null, + null, + null, + null, + null, + null, + { + "constant": false, + "id": 4601, + "mutability": "mutable", + "name": "liquidity", + "nodeType": "VariableDeclaration", + "scope": 4708, + "src": "50010:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4600, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "50010:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + null, + null, + null, + null + ], + "id": 4611, + "initialValue": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 4606, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "50130:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4608, + "indexExpression": { + "id": 4607, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "50146:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "50130:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4609, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "50130:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + ], + "expression": { + "arguments": [ + { + "id": 4603, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "50079:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4602, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "50051:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "50051:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 4605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 201, + "src": "50051:78:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "function (uint256) view external returns (uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)" + } + }, + "id": 4610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "50051:106:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint96_$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint128_$_t_uint128_$", + "typeString": "tuple(uint96,address,address,address,uint24,int24,int24,uint128,uint256,uint256,uint128,uint128)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "49995:162:0" + }, + { + "assignments": [ + 4613 + ], + "declarations": [ + { + "constant": false, + "id": 4613, + "mutability": "mutable", + "name": "outLiquidity", + "nodeType": "VariableDeclaration", + "scope": 4708, + "src": "50171:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4612, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "50171:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "id": 4624, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 4618, + "name": "liquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4601, + "src": "50268:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "expression": { + "id": 4619, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4568, + "src": "50299:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams memory" + } + }, + "id": 4620, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 1279, + "src": "50299:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4621, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1473, + "src": "50345:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4616, + "name": "FullMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "50231:8:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_FullMath_$666_$", + "typeString": "type(library FullMath)" + } + }, + "id": 4617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mulDiv", + "nodeType": "MemberAccess", + "referencedDeclaration": 665, + "src": "50231:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 4622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "50231:144:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "50206:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 4614, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "50206:7:0", + "typeDescriptions": {} + } + }, + "id": 4623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "50206:183:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "50171:218:0" + }, + { + "assignments": [ + 4628 + ], + "declarations": [ + { + "constant": false, + "id": 4628, + "mutability": "mutable", + "name": "decreaseLiquidityParams", + "nodeType": "VariableDeclaration", + "scope": 4708, + "src": "50404:94:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$116_memory_ptr", + "typeString": "struct INonfungiblePositionManager.DecreaseLiquidityParams" + }, + "typeName": { + "id": 4627, + "name": "INonfungiblePositionManager.DecreaseLiquidityParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 116, + "src": "50404:51:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$116_storage_ptr", + "typeString": "struct INonfungiblePositionManager.DecreaseLiquidityParams" + } + }, + "visibility": "internal" + } + ], + "id": 4641, + "initialValue": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 4631, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "50600:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4633, + "indexExpression": { + "id": 4632, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "50616:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "50600:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4634, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "50600:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + { + "id": 4635, + "name": "outLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4613, + "src": "50651:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "hexValue": "30", + "id": 4636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "50689:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 4637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "50716:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "expression": { + "id": 4638, + "name": "cellarParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4568, + "src": "50741:12:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams memory" + } + }, + "id": 4639, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "deadline", + "nodeType": "MemberAccess", + "referencedDeclaration": 1287, + "src": "50741:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 4629, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "50525:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "DecreaseLiquidityParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 116, + "src": "50525:51:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_DecreaseLiquidityParams_$116_storage_ptr_$", + "typeString": "type(struct INonfungiblePositionManager.DecreaseLiquidityParams storage pointer)" + } + }, + "id": 4640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenId", + "liquidity", + "amount0Min", + "amount1Min", + "deadline" + ], + "nodeType": "FunctionCall", + "src": "50525:252:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$116_memory_ptr", + "typeString": "struct INonfungiblePositionManager.DecreaseLiquidityParams memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "50404:373:0" + }, + { + "assignments": [ + 4643, + 4645 + ], + "declarations": [ + { + "constant": false, + "id": 4643, + "mutability": "mutable", + "name": "amount0", + "nodeType": "VariableDeclaration", + "scope": 4708, + "src": "50792:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "50792:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4645, + "mutability": "mutable", + "name": "amount1", + "nodeType": "VariableDeclaration", + "scope": 4708, + "src": "50809:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "50809:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4652, + "initialValue": { + "arguments": [ + { + "id": 4650, + "name": "decreaseLiquidityParams", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4628, + "src": "50927:23:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$116_memory_ptr", + "typeString": "struct INonfungiblePositionManager.DecreaseLiquidityParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$116_memory_ptr", + "typeString": "struct INonfungiblePositionManager.DecreaseLiquidityParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 4647, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "50868:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4646, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "50840:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "50840:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 4649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "decreaseLiquidity", + "nodeType": "MemberAccess", + "referencedDeclaration": 158, + "src": "50840:86:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_DecreaseLiquidityParams_$116_memory_ptr_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (struct INonfungiblePositionManager.DecreaseLiquidityParams memory) payable external returns (uint256,uint256)" + } + }, + "id": 4651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "50840:111:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "50791:160:0" + }, + { + "assignments": [ + 4654, + 4656 + ], + "declarations": [ + { + "constant": false, + "id": 4654, + "mutability": "mutable", + "name": "collectAmount0", + "nodeType": "VariableDeclaration", + "scope": 4708, + "src": "50966:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "50966:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4656, + "mutability": "mutable", + "name": "collectAmount1", + "nodeType": "VariableDeclaration", + "scope": 4708, + "src": "50990:22:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4655, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "50990:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4683, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 4663, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "51174:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4665, + "indexExpression": { + "id": 4664, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "51190:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "51174:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarTickInfo_$1297_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory" + } + }, + "id": 4666, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "tokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 1290, + "src": "51174:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + { + "arguments": [ + { + "id": 4669, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "51233:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CellarPoolShare_$4770", + "typeString": "contract CellarPoolShare" + } + ], + "id": 4668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "51225:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51225:7:0", + "typeDescriptions": {} + } + }, + "id": 4670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51225:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "expression": { + "arguments": [ + { + "id": 4673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "51269:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 4672, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "51269:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + } + ], + "id": 4671, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "51264:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51264:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint128", + "typeString": "type(uint128)" + } + }, + "id": 4675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "51264:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + { + "expression": { + "arguments": [ + { + "id": 4678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "51312:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 4677, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "51312:7:0", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + } + ], + "id": 4676, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "51307:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51307:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint128", + "typeString": "type(uint128)" + } + }, + "id": 4680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "max", + "nodeType": "MemberAccess", + "src": "51307:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 4661, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "51109:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "CollectParams", + "nodeType": "MemberAccess", + "referencedDeclaration": 125, + "src": "51109:41:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CollectParams_$125_storage_ptr_$", + "typeString": "type(struct INonfungiblePositionManager.CollectParams storage pointer)" + } + }, + "id": 4681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "tokenId", + "recipient", + "amount0Max", + "amount1Max" + ], + "nodeType": "FunctionCall", + "src": "51109:230:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CollectParams_$125_memory_ptr", + "typeString": "struct INonfungiblePositionManager.CollectParams memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_CollectParams_$125_memory_ptr", + "typeString": "struct INonfungiblePositionManager.CollectParams memory" + } + ], + "expression": { + "arguments": [ + { + "id": 4658, + "name": "NONFUNGIBLEPOSITIONMANAGER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "51056:26:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4657, + "name": "INonfungiblePositionManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "51028:27:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_INonfungiblePositionManager_$202_$", + "typeString": "type(contract INonfungiblePositionManager)" + } + }, + "id": 4659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51028:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_INonfungiblePositionManager_$202", + "typeString": "contract INonfungiblePositionManager" + } + }, + "id": 4660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "collect", + "nodeType": "MemberAccess", + "referencedDeclaration": 167, + "src": "51028:63:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_struct$_CollectParams_$125_memory_ptr_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (struct INonfungiblePositionManager.CollectParams memory) payable external returns (uint256,uint256)" + } + }, + "id": 4682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51028:325:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "50965:388:0" + }, + { + "expression": { + "id": 4688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4684, + "name": "fee0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "51367:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4685, + "name": "collectAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4654, + "src": "51375:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4686, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4643, + "src": "51392:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51375:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51367:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4689, + "nodeType": "ExpressionStatement", + "src": "51367:32:0" + }, + { + "expression": { + "id": 4694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4690, + "name": "fee1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4587, + "src": "51413:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4691, + "name": "collectAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "51421:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4692, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4645, + "src": "51438:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51421:24:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51413:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4695, + "nodeType": "ExpressionStatement", + "src": "51413:32:0" + }, + { + "expression": { + "id": 4698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4696, + "name": "outAmount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4571, + "src": "51459:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 4697, + "name": "amount0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4643, + "src": "51473:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51459:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4699, + "nodeType": "ExpressionStatement", + "src": "51459:21:0" + }, + { + "expression": { + "id": 4702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4700, + "name": "outAmount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4573, + "src": "51494:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 4701, + "name": "amount1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4645, + "src": "51508:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51494:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4703, + "nodeType": "ExpressionStatement", + "src": "51494:21:0" + }, + { + "expression": { + "id": 4706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4704, + "name": "liquiditySum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4575, + "src": "51529:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 4705, + "name": "outLiquidity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4613, + "src": "51545:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "51529:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 4707, + "nodeType": "ExpressionStatement", + "src": "51529:28:0" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4593, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "49948:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 4594, + "name": "_cellarTickInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4580, + "src": "49952:15:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_CellarTickInfo_$1297_memory_ptr_$dyn_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarTickInfo memory[] memory" + } + }, + "id": 4595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "src": "49952:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "49948:26:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4709, + "initializationExpression": { + "assignments": [ + 4590 + ], + "declarations": [ + { + "constant": false, + "id": 4590, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 4709, + "src": "49934:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 4589, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "49934:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "id": 4592, + "initialValue": { + "hexValue": "30", + "id": 4591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "49945:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "49934:12:0" + }, + "loopExpression": { + "expression": { + "id": 4598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "49976:3:0", + "subExpression": { + "id": 4597, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "49976:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 4599, + "nodeType": "ExpressionStatement", + "src": "49976:3:0" + }, + "nodeType": "ForStatement", + "src": "49929:1639:0" + }, + { + "expression": { + "id": 4717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4710, + "name": "fee0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "51577:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4711, + "name": "fee0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "51585:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 4712, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1493, + "src": "51592:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "51585:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4714, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "51584:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 4715, + "name": "FEEDOMINATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "51599:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "51584:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51577:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4718, + "nodeType": "ExpressionStatement", + "src": "51577:34:0" + }, + { + "expression": { + "id": 4726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4719, + "name": "fee1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4587, + "src": "51621:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4720, + "name": "fee1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4587, + "src": "51629:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 4721, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1493, + "src": "51636:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "51629:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4723, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "51628:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 4724, + "name": "FEEDOMINATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "51643:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "51628:27:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "51621:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4727, + "nodeType": "ExpressionStatement", + "src": "51621:34:0" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4728, + "name": "fee0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "51669:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "51676:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "51669:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4740, + "nodeType": "IfStatement", + "src": "51665:80:0", + "trueBody": { + "id": 4739, + "nodeType": "Block", + "src": "51679:66:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4735, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "51721:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4736, + "name": "fee0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4584, + "src": "51729:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 4732, + "name": "token0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1481, + "src": "51700:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4731, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "51693:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 4733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51693:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 4734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "51693:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51693:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4738, + "nodeType": "ExpressionStatement", + "src": "51693:41:0" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4741, + "name": "fee1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4587, + "src": "51758:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "51765:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "51758:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4753, + "nodeType": "IfStatement", + "src": "51754:80:0", + "trueBody": { + "id": 4752, + "nodeType": "Block", + "src": "51768:66:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4748, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1475, + "src": "51810:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4749, + "name": "fee1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4587, + "src": "51818:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 4745, + "name": "token1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "51789:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4744, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "51782:6:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$69_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 4746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51782:14:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$69", + "typeString": "contract IERC20" + } + }, + "id": 4747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 432, + "src": "51782:27:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$69_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$69_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "51782:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4751, + "nodeType": "ExpressionStatement", + "src": "51782:41:0" + } + ] + } + } + ] + }, + "id": 4755, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeLiquidity", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4568, + "mutability": "mutable", + "name": "cellarParams", + "nodeType": "VariableDeclaration", + "scope": 4755, + "src": "49647:38:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_memory_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + }, + "typeName": { + "id": 4567, + "name": "CellarRemoveParams", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1288, + "src": "49647:18:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CellarRemoveParams_$1288_storage_ptr", + "typeString": "struct ICellarPoolShare.CellarRemoveParams" + } + }, + "visibility": "internal" + } + ], + "src": "49646:40:0" + }, + "returnParameters": { + "id": 4576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4571, + "mutability": "mutable", + "name": "outAmount0", + "nodeType": "VariableDeclaration", + "scope": 4755, + "src": "49722:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49722:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4573, + "mutability": "mutable", + "name": "outAmount1", + "nodeType": "VariableDeclaration", + "scope": 4755, + "src": "49750:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4572, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "49750:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4575, + "mutability": "mutable", + "name": "liquiditySum", + "nodeType": "VariableDeclaration", + "scope": 4755, + "src": "49778:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 4574, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "49778:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "49712:92:0" + }, + "scope": 4770, + "src": "49621:2219:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4764, + "nodeType": "Block", + "src": "51965:2:0", + "statements": [] + }, + "id": 4765, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4762, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4757, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 4765, + "src": "51885:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51885:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4759, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 4765, + "src": "51907:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51907:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4761, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 4765, + "src": "51927:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "51927:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "51875:72:0" + }, + "returnParameters": { + "id": 4763, + "nodeType": "ParameterList", + "parameters": [], + "src": "51965:0:0" + }, + "scope": 4770, + "src": "51846:121:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4768, + "nodeType": "Block", + "src": "52000:2:0", + "statements": [] + }, + "id": 4769, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4766, + "nodeType": "ParameterList", + "parameters": [], + "src": "51980:2:0" + }, + "returnParameters": { + "id": 4767, + "nodeType": "ParameterList", + "parameters": [], + "src": "52000:0:0" + }, + "scope": 4770, + "src": "51973:29:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4771, + "src": "16989:35015:0" + } + ], + "src": "133:51871:0" + }, + "id": 0 + } + } + } +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.json new file mode 100644 index 00000000..c67cb6d1 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220909b44d85c67f2faa04e4ffff4978b5367a39eb2c1521444157c2f5ff7d5362e64736f6c63430007060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220909b44d85c67f2faa04e4ffff4978b5367a39eb2c1521444157c2f5ff7d5362e64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.json new file mode 100644 index 00000000..54241ba9 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/BlockLock.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BlockLock", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastLockedBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060cd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80639f3e8b3414602d575b600080fd5b603c60383660046062565b6050565b60405160479190608e565b60405180910390f35b60006020819052908152604090205481565b6000602082840312156072578081fd5b81356001600160a01b03811681146087578182fd5b9392505050565b9081526020019056fea2646970667358221220de52df3833b08fee05f92292987565724b21deec30670295f2da15820e925f1f64736f6c63430007060033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80639f3e8b3414602d575b600080fd5b603c60383660046062565b6050565b60405160479190608e565b60405180910390f35b60006020819052908152604090205481565b6000602082840312156072578081fd5b81356001600160a01b03811681146087578182fd5b9392505050565b9081526020019056fea2646970667358221220de52df3833b08fee05f92292987565724b21deec30670295f2da15820e925f1f64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.json new file mode 100644 index 00000000..778d441b --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/CellarPoolShare.json @@ -0,0 +1,762 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CellarPoolShare", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "address", + "name": "_token0", + "type": "address" + }, + { + "internalType": "address", + "name": "_token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "_feeLevel", + "type": "uint24" + }, + { + "components": [ + { + "internalType": "uint184", + "name": "tokenId", + "type": "uint184" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "uint24", + "name": "weight", + "type": "uint24" + } + ], + "internalType": "struct ICellarPoolShare.CellarTickInfo[]", + "name": "_cellarTickInfo", + "type": "tuple[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "AddedLiquidity", + "type": "event" + }, + { + "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": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "RemovedLiquidity", + "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": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityEthForUniV3", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityForUniV3", + "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": "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": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "cellarTickInfo", + "outputs": [ + { + "internalType": "uint184", + "name": "tokenId", + "type": "uint184" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "uint24", + "name": "weight", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "fee", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeLevel", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "lastLockedBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint184", + "name": "tokenId", + "type": "uint184" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "uint24", + "name": "weight", + "type": "uint24" + } + ], + "internalType": "struct ICellarPoolShare.CellarTickInfo[]", + "name": "_cellarTickInfo", + "type": "tuple[]" + } + ], + "name": "rebalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityEthFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newFee", + "type": "uint16" + } + ], + "name": "setFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_validator", + "type": "address" + }, + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setValidator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "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": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "validator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60e06040526009805462ffff0019166203e8001790553480156200002257600080fd5b50604051620066fc380380620066fc83398101604081905262000045916200047d565b85516200005a90600690602089019062000304565b5084516200007090600790602088019062000304565b50826001600160a01b0316846001600160a01b031610620000ae5760405162461bcd60e51b8152600401620000a5906200062c565b60405180910390fd5b6001600160601b0319606085811b821660805284901b1660a0526001600160e81b031960e883901b1660c05260005b8151811015620002e4576000828281518110620000f657fe5b60200260200101516060015162ffffff1611620001275760405162461bcd60e51b8152600401620000a59062000665565b8181815181106200013457fe5b6020026020010151600001516001600160b81b03166000146200016b5760405162461bcd60e51b8152600401620000a59062000648565b8015620001ce578160018203815181106200018257fe5b60200260200101516040015160020b8282815181106200019e57fe5b60200260200101516020015160020b1315620001ce5760405162461bcd60e51b8152600401620000a59062000682565b6008604051806080016040528060006001600160b81b03168152602001848481518110620001f857fe5b60200260200101516020015160020b81526020018484815181106200021957fe5b60200260200101516040015160020b81526020018484815181106200023a57fe5b60209081029190910181015160609081015162ffffff90811690935284546001808201875560009687529583902085519101805493860151604087015196909301516001600160b81b03199094166001600160b81b039092169190911762ffffff60b81b1916600160b81b600293840b8616021762ffffff60d01b1916600160d01b9590920b841694909402176001600160e81b0316600160e81b919092160217905501620000dd565b5050600580546001600160a01b0319163317905550620006c39350505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200033c576000855562000387565b82601f106200035757805160ff191683800117855562000387565b8280016001018555821562000387579182015b82811115620003875782518255916020019190600101906200036a565b506200039592915062000399565b5090565b5b808211156200039557600081556001016200039a565b80516001600160a01b0381168114620003c857600080fd5b919050565b8051600281900b8114620003c857600080fd5b600082601f830112620003f1578081fd5b81516001600160401b038111156200040557fe5b60206200041b601f8301601f191682016200069f565b82815285828487010111156200042f578384fd5b835b838110156200044e57858101830151828201840152820162000431565b838111156200045f57848385840101525b5095945050505050565b805162ffffff81168114620003c857600080fd5b60008060008060008060c0878903121562000496578182fd5b86516001600160401b0380821115620004ad578384fd5b620004bb8a838b01620003e0565b97506020890151915080821115620004d1578384fd5b620004df8a838b01620003e0565b9650620004ef60408a01620003b0565b9550620004ff60608a01620003b0565b94506200050f60808a0162000469565b935060a089015191508082111562000525578283fd5b818901915089601f83011262000539578283fd5b8151818111156200054657fe5b620005566020808302016200069f565b80828252602082019150602085018d602060808602880101111562000579578687fd5b8695505b8386101562000619576080818f03121562000596578687fd5b604051608081018181108782111715620005ac57fe5b60405281516001600160b81b0381168114620005c6578889fd5b8152620005d660208301620003cd565b6020820152620005e960408301620003cd565b6040820152620005fc6060830162000469565b60608201528352600195909501946020909201916080016200057d565b5080955050505050509295509295509295565b602080825260029082015261523960f01b604082015260600190565b60208082526003908201526252313160e81b604082015260600190565b60208082526003908201526205231360ec1b604082015260600190565b60208082526003908201526229189960e91b604082015260600190565b6040518181016001600160401b0381118282101715620006bb57fe5b604052919050565b60805160601c60a05160601c60c05160e81c615e826200087a60003980610b815280610d6a5280610f835280611e9d528061290e5280612ae35280612ce8528061371a52806141155280614768525080610a195280610b5f5280610d435280610ee75280610f37528061106552806111595280611405528061142e5280611553528061169752806116c75280611964528061199b5280611ce55280611dd15280611dfa528061215b528061218952806122b0528061235d52806126dc52806127bb52806128ec5280612abc5280612c4c5280612c9c5280612dca5280612ebe5280613450528061358752806136eb5280613b5d52806140f3528061474652508061057a528061098e5280610b3d5280610cce5280610d1e5280610e4c5280610f5c52806110ba52806113d15280611458528061151d528061165352806116f1528061184b5280611ad45280611bca5280611cb65280611e245280612074528061228752806122da528061269c528061271c52806128ca5280612a475280612a975280612bc55280612cc15280612e1f5280613410528061353652806136bc5280613b1452806140d152806147245250615e826000f3fe6080604052600436106101855760003560e01c806370e032b1116100d1578063a2d96f5f1161008a578063dd62ed3e11610064578063dd62ed3e14610455578063ddca3f4314610475578063f2fde38b14610497578063fdb5a03e146104b75761018c565b8063a2d96f5f14610400578063a9059cbb14610420578063d21220a7146104405761018c565b806370e032b1146103615780637cf134cb146103745780638da5cb5b146103965780638e005553146103ab57806395d89b41146103cb5780639f3e8b34146103e05761018c565b8063223b3b7a1161013e578063313ce56711610118578063313ce567146102df57806333bc230a146103015780634623c91d1461032157806370a08231146103415761018c565b8063223b3b7a1461027f57806323b872dd1461029f578063276cd920146102bf5761018c565b806306fdde0314610191578063095ea7b3146101bc5780630dfe1681146101e9578063135d4f241461020b578063157238661461022d57806318160ddd1461025d5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66104cc565b6040516101b3919061580f565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004615269565b610562565b6040516101b39190615804565b3480156101f557600080fd5b506101fe610578565b6040516101b39190615771565b34801561021757600080fd5b5061022b610226366004615294565b61059c565b005b34801561023957600080fd5b5061024d6102483660046155cb565b611231565b6040516101b39493929190615d53565b34801561026957600080fd5b50610272611280565b6040516101b39190615d92565b34801561028b57600080fd5b506101dc61029a36600461518c565b611286565b3480156102ab57600080fd5b506101dc6102ba3660046151fc565b61129b565b3480156102cb57600080fd5b5061022b6102da366004615459565b611306565b3480156102eb57600080fd5b506102f46114c2565b6040516101b39190615d9b565b34801561030d57600080fd5b5061022b61031c3660046153c7565b6114c7565b34801561032d57600080fd5b5061022b61033c36600461523c565b61175c565b34801561034d57600080fd5b5061027261035c36600461518c565b6117b1565b61022b61036f3660046153c7565b6117d0565b34801561038057600080fd5b50610389611e9b565b6040516101b39190615d82565b3480156103a257600080fd5b506101fe611ebf565b3480156103b757600080fd5b5061022b6103c636600461550f565b611ece565b3480156103d757600080fd5b506101a6611f16565b3480156103ec57600080fd5b506102726103fb36600461518c565b611f77565b34801561040c57600080fd5b5061022b61041b366004615459565b611f89565b34801561042c57600080fd5b506101dc61043b366004615269565b61234e565b34801561044c57600080fd5b506101fe61235b565b34801561046157600080fd5b506102726104703660046151c4565b61237f565b34801561048157600080fd5b5061048a6123aa565b6040516101b39190615d30565b3480156104a357600080fd5b5061022b6104b236600461518c565b6123b9565b3480156104c357600080fd5b5061022b612405565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b5050505050905090565b600061056f338484612f97565b50600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b336000818152602081905260409020544310156105d45760405162461bcd60e51b81526004016105cb90615842565b60405180910390fd5b6005546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105cb9061597f565b6040805160a08101825260045481526000602082018190529181019190915230606082015260001960808201526106348161304b565b50505060006008805480602002602001604051908101604052809291908181526020016000905b828210156106cf57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff16606082015282526001909201910161065b565b50505050905060005b81518110156107765773c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166342966c6883838151811061071057fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016107389190615d3f565b600060405180830381600087803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b5050600190920191506106d89050565b50610783600860006150b9565b60005b84518110156109735784818151811061079b57fe5b60200260200101516040015160020b8582815181106107b657fe5b60200260200101516020015160020b136107e25760405162461bcd60e51b81526004016105cb90615abb565b801561083f578460018203815181106107f757fe5b60200260200101516040015160020b85828151811061081257fe5b60200260200101516020015160020b131561083f5760405162461bcd60e51b81526004016105cb90615abb565b600085828151811061084d57fe5b60200260200101516060015162ffffff161161087b5760405162461bcd60e51b81526004016105cb9061599c565b84818151811061088757fe5b6020026020010151600001516001600160b81b03166000146108bb5760405162461bcd60e51b81526004016105cb90615946565b60088582815181106108c957fe5b60209081029190910181015182546001818101855560009485529383902082519101805493830151604084015160609094015162ffffff908116600160e81b026001600160e81b03600296870b8316600160d01b0262ffffff60d01b199490970b909216600160b81b0262ffffff60b81b196001600160b81b039096166001600160b81b031990981697909717949094169590951716929092179290921691909117905501610786565b506040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906109c3903090600401615771565b60206040518083038186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1391906155e3565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610a639190615771565b60206040518083038186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab391906155e3565b9050600080610afa6040518060c001604052808681526020018581526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152958290039594819003949193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290610ba9907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b158015610bc157600080fd5b505afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c3157600080fd5b505afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c69919061552b565b50505050505090508284028286021115610e8a57600082610caf610c9b86856001600160a01b0316600160601b613ba5565b846001600160a01b0316600160601b613ba5565b018486028488020381610cbe57fe5b049050610d096001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991610dea9190600401615bb4565b602060405180830381600087803b158015610e0457600080fd5b505af1925050508015610e34575060408051601f3d908101601f19168201909252610e31918101906155e3565b60015b610e3d57610e3f565b505b610e886001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b82840282860210156110a357600083610ec8610eb485600160601b866001600160a01b0316613ba5565b600160601b856001600160a01b0316613ba5565b018387028587020381610ed757fe5b049050610f226001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf389916110039190600401615bb4565b602060405180830381600087803b15801561101d57600080fd5b505af192505050801561104d575060408051601f3d908101601f1916820190925261104a918101906155e3565b60015b61105657611058565b505b6110a16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906110ef903090600401615771565b60206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f91906155e3565b6040516370a0823160e01b81529095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061118e903090600401615771565b60206040518083038186803b1580156111a657600080fd5b505afa1580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de91906155e3565b93506112226040518060c001604052808781526020018681526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b50505050505050505050505050565b6008818154811061124157600080fd5b6000918252602090912001546001600160b81b0381169150600160b81b8104600290810b91600160d01b810490910b90600160e81b900462ffffff1684565b60045490565b60036020526000908152604090205460ff1681565b60006112a8848484613d53565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112ec5760405162461bcd60e51b81526004016105cb906159d4565b6112f98533858403612f97565b60019150505b9392505050565b336000818152602081905260409020544310156113355760405162461bcd60e51b81526004016105cb90615842565b61133e33613e4f565b816080013542111561134f57600080fd5b6000808061136a6113653687900387018761546a565b61304b565b9194509250905061137c338635613e6e565b84602001358310156113a05760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156113c45760405162461bcd60e51b81526004016105cb90615a9e565b6113f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b61142c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df8386866040516114b393929190615d0f565b60405180910390a35050505050565b601290565b336000818152602081905260409020544310156114f65760405162461bcd60e51b81526004016105cb90615842565b6114ff33613e4f565b8160a0013542111561151057600080fd5b6115466001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308535613f50565b61157f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633306020860135613f50565b600080808061159b611596368890038801886153de565b613483565b9350935093509350816001600160801b0316600014156115cd576115c833826001600160801b0316613f77565b6115f5565b6115f5336115f0836001600160801b0316600454866001600160801b0316613ba5565b613f77565b85604001358410156116195760405162461bcd60e51b81526004016105cb906158f0565b856060013583101561163d5760405162461bcd60e51b81526004016105cb90615a9e565b853584101561167e5761167e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338835879003613f31565b82866020013511156116c5576116c56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016336020890135869003613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be83878760405161174c93929190615d0f565b60405180910390a3505050505050565b6005546001600160a01b031633146117865760405162461bcd60e51b81526004016105cb9061597f565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600160205260409020545b919050565b60095460ff16156117f35760405162461bcd60e51b81526004016105cb90615929565b6009805460ff191660011790553360008181526020819052604090205443101561182f5760405162461bcd60e51b81526004016105cb90615842565b61183833613e4f565b8160a0013542111561184957600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156119995781353411156118cc5760405133908335340380156108fc02916000818181858888f193505050501580156118c6573d6000803e3d6000fd5b506118ec565b348235146118ec5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083600001356040518263ffffffff1660e01b81526004016000604051808303818588803b15801561193f57600080fd5b505af1158015611953573d6000803e3d6000fd5b506119949350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050306020860135613f50565b611b01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146119f55760405162461bcd60e51b81526004016105cb906158d3565b8160200135341115611a395760405133906020840135340380156108fc02916000818181858888f19350505050158015611a33573d6000803e3d6000fd5b50611a5c565b81602001353414611a5c5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083602001356040518263ffffffff1660e01b81526004016000604051808303818588803b158015611aaf57600080fd5b505af1158015611ac3573d6000803e3d6000fd5b50611b019350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050308535613f50565b6000808080611b18611596368890038801886153de565b9350935093509350816001600160801b031660001415611b4a57611b4533826001600160801b0316613f77565b611b6d565b611b6d336115f0836001600160801b0316600454866001600160801b0316613ba5565b8560400135841015611b915760405162461bcd60e51b81526004016105cb906158f0565b8560600135831015611bb55760405162461bcd60e51b81526004016105cb90615a9e565b853584900360208701358490038115611cdd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611ca957604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611c44908590600401615d92565b600060405180830381600087803b158015611c5e57600080fd5b505af1158015611c72573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015611ca3573d6000803e3d6000fd5b50611cdd565b611cdd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b8015611df8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611dc457604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611d5f908490600401615d92565b600060405180830381600087803b158015611d7957600080fd5b505af1158015611d8d573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611dbe573d6000803e3d6000fd5b50611df8565b611df86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be858989604051611e7f93929190615d0f565b60405180910390a350506009805460ff19169055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6005546001600160a01b031690565b6005546001600160a01b03163314611ef85760405162461bcd60e51b81526004016105cb9061597f565b6009805461ffff9092166101000262ffff0019909216919091179055565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b60006020819052908152604090205481565b60095460ff1615611fac5760405162461bcd60e51b81526004016105cb90615929565b6009805460ff1916600117905533600081815260208190526040902054431015611fe85760405162461bcd60e51b81526004016105cb90615842565b611ff133613e4f565b816080013542111561200257600080fd5b600080806120186113653687900387018761546a565b9194509250905061202a338635613e6e565b846020013583101561204e5760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156120725760405162461bcd60e51b81526004016105cb90615a9e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2141561218757604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906120ee908690600401615d92565b600060405180830381600087803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f1935050505015801561214d573d6000803e3d6000fd5b506121826001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b6122ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146121e35760405162461bcd60e51b81526004016105cb906158d3565b604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d9061221a908590600401615d92565b600060405180830381600087803b15801561223457600080fd5b505af1158015612248573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015612279573d6000803e3d6000fd5b506122ae6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df83868660405161233593929190615d0f565b60405180910390a350506009805460ff19169055505050565b600061056f338484613d53565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600954610100900461ffff1681565b6005546001600160a01b031633146123e35760405162461bcd60e51b81526004016105cb9061597f565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526003602052604090205460ff166124345760405162461bcd60e51b81526004016105cb9061585f565b336000818152602081905260409020544310156124635760405162461bcd60e51b81526004016105cb90615842565b60006008805480602002602001604051908101604052809291908181526020016000905b828210156124fb57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101612487565b505050509050600080600080600090505b84518110156126695784818151811061252157fe5b6020026020010151600001516001600160b81b0316600014156125565760405162461bcd60e51b81526004016105cb90615ad8565b84818151811061256257fe5b60200260200101516060015162ffffff168401935060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808a87815181106125b457fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526126069190600401615b2e565b6040805180830381600087803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126579190615636565b9501949390930192505060010161250c565b5060095461271061010090910461ffff16838102829004919083020481156126c5576005546126c5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561270557600554612705906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612751903090600401615771565b60206040518083038186803b15801561276957600080fd5b505afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a191906155e3565b6040516370a0823160e01b81529094506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906127f0903090600401615771565b60206040518083038186803b15801561280857600080fd5b505afa15801561281c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284091906155e3565b92506000806128876040518060c001604052808881526020018781526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152978290039796819003969193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290612936907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561294e57600080fd5b505afa158015612962573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298691906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156129be57600080fd5b505afa1580156129d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f6919061552b565b50505050505090508286028288021115612c0357600082612a28610c9b86856001600160a01b0316600160601b613ba5565b01848802848a020381612a3757fe5b049050612a826001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612b639190600401615bb4565b602060405180830381600087803b158015612b7d57600080fd5b505af1925050508015612bad575060408051601f3d908101601f19168201909252612baa918101906155e3565b60015b612bb657612bb8565b505b612c016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b8286028288021015612e0857600083612c2d610eb485600160601b866001600160a01b0316613ba5565b018389028589020381612c3c57fe5b049050612c876001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612d689190600401615bb4565b602060405180830381600087803b158015612d8257600080fd5b505af1925050508015612db2575060408051601f3d908101601f19168201909252612daf918101906155e3565b60015b612dbb57612dbd565b505b612e066001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612e54903090600401615771565b60206040518083038186803b158015612e6c57600080fd5b505afa158015612e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea491906155e3565b6040516370a0823160e01b81529097506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612ef3903090600401615771565b60206040518083038186803b158015612f0b57600080fd5b505afa158015612f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4391906155e3565b9550612f876040518060c001604052808981526020018881526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050505050505050505050505050565b6001600160a01b038316612fbd5760405162461bcd60e51b81526004016105cb90615a48565b6001600160a01b038216612fe35760405162461bcd60e51b81526004016105cb90615a65565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061303e908590615d92565b60405180910390a3505050565b6000806000806008805480602002602001604051908101604052809291908181526020016000905b828210156130e757600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101613073565b50505050905060008060005b83518161ffff1610156133dc57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab88868461ffff168151811061313557fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161315d9190615d3f565b6101806040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ae9190615659565b5050505097505050505050505060006131d7826001600160801b03168b60000151600454613ba5565b905060006040518060a00160405280888661ffff16815181106131f657fe5b6020026020010151600001516001600160b81b03168152602001836001600160801b0316815260200160008152602001600081526020018c60800151815250905060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b0316630c49ccbe846040518263ffffffff1660e01b815260040161327a9190615b71565b6040805180830381600087803b15801561329357600080fd5b505af11580156132a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cb9190615636565b9150915060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808e8c61ffff168151811061331057fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526133629190600401615b2e565b6040805180830381600087803b15801561337b57600080fd5b505af115801561338f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b39190615636565b9e85019e9d84019d9c9096019b93909503989098019750900394909401935050506001016130f3565b5060095461271061010090910461ffff16928302819004929190910204811561343957600554613439906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561347957600554613479906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b5050509193909250565b60008060008060006008805480602002602001604051908101604052809291908181526020016000905b8282101561352157600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff1660608201528252600190920191016134ad565b50508851929350613574926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925073c36442b4a4522e871399cd717abdd847ab11fe889150613c54565b60208601516135c3906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169073c36442b4a4522e871399cd717abdd847ab11fe8890613c54565b6000806000835167ffffffffffffffff811180156135e057600080fd5b5060405190808252806020026020018201604052801561360a578160200160208202803683370190505b5090506000845167ffffffffffffffff8111801561362757600080fd5b50604051908082528060200260200182016040528015613651578160200160208202803683370190505b50905061365d8561400a565b919a509296509094509092509050831580159061367a5750600083115b1561369c57613696858b600001518c60200151878787876146d3565b90945092505b60005b85518161ffff161015613b065760006040518061016001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff168152602001888461ffff168151811061375357fe5b60200260200101516040015160020b8152602001888461ffff168151811061377757fe5b60200260200101516020015160020b815260200160008152602001600081526020016000815260200160008152602001306001600160a01b031681526020018d60a00151815250905060006040518060c00160405280898561ffff16815181106137dd57fe5b6020026020010151600001516001600160b81b03168152602001600081526020016000815260200160008152602001600081526020018e60a00151815250905060008711156138815761384c8d60000151868561ffff168151811061383e57fe5b602002602001015189613ba5565b60a08301819052602082015260408d015185516138749190879061ffff871690811061383e57fe5b60e0830181905260608201525b85156138e3576138ad8d60200151858561ffff168151811061389f57fe5b602002602001015188613ba5565b60c08301819052604082015260608d015184516138d59190869061ffff871690811061389f57fe5b610100830181905260808201525b60008260a0015111806138fa575060008260c00151115b15613afc576139076150da565b888461ffff168151811061391757fe5b6020026020010151600001516001600160b81b031660001415613a3957604051634418b22b60e11b815273c36442b4a4522e871399cd717abdd847ab11fe889063883164569061396b908690600401615c61565b608060405180830381600087803b15801561398557600080fd5b505af19250505080156139b5575060408051601f3d908101601f191682019092526139b2918101906155fb565b60015b6139be576139dc565b9284526001600160801b039091166020840152604083015260608201525b80516008805461ffff87169081106139f057fe5b60009182526020918290200180546001600160b81b0319166001600160b81b03939093169290921790915560408201516060830151918301519e019d9c019b9990990198613afa565b60405163219f5d1760e01b815273c36442b4a4522e871399cd717abdd847ab11fe889063219f5d1790613a70908590600401615c1d565b606060405180830381600087803b158015613a8a57600080fd5b505af1925050508015613aba575060408051601f3d908101601f19168201909252613ab7918101906154db565b60015b613ac357613ade565b6001600160801b039092166020840152604083015260608201525b80604001518d019c5080606001518c019b5080602001518a0199505b505b505060010161369f565b50613b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b613b996001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b50505050509193509193565b6000808060001985870986860292508281109083900303905080613bdb5760008411613bd057600080fd5b5082900490506112ff565b808411613be757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b801580613cdc5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90613c8a9030908690600401615785565b60206040518083038186803b158015613ca257600080fd5b505afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda91906155e3565b155b613cf85760405162461bcd60e51b81526004016105cb90615b12565b613d4e8363095ea7b360e01b8484604051602401613d179291906157eb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a9c565b505050565b6001600160a01b038316613d795760405162461bcd60e51b81526004016105cb9061587c565b6001600160a01b038216613d9f5760405162461bcd60e51b81526004016105cb90615899565b613daa838383613d4e565b6001600160a01b03831660009081526001602052604090205481811015613de35760405162461bcd60e51b81526004016105cb90615a0e565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e41908690615d92565b60405180910390a350505050565b6001600160a01b03166000908152602081905260409020436001019055565b6001600160a01b038216613e945760405162461bcd60e51b81526004016105cb90615a2b565b613ea082600083613d4e565b6001600160a01b03821660009081526001602052604090205481811015613ed95760405162461bcd60e51b81526004016105cb90615af5565b6001600160a01b0383166000818152600160205260408082208585039055600480548690039055519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061303e908690615d92565b613d4e8363a9059cbb60e01b8484604051602401613d179291906157eb565b613f71846323b872dd60e01b858585604051602401613d17939291906157c7565b50505050565b6001600160a01b038216613f9d5760405162461bcd60e51b81526004016105cb906158b6565b613fa960008383613d4e565b60048054820190556001600160a01b038216600081815260016020526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613ffe908590615d92565b60405180910390a35050565b6000806000606080855167ffffffffffffffff8111801561402a57600080fd5b50604051908082528060200260200182016040528015614054578160200160208202803683370190505b509150855167ffffffffffffffff8111801561406f57600080fd5b50604051908082528060200260200182016040528015614099578160200160208202803683370190505b50604051630b4c774160e11b81529091506000908190731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061413d907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561415557600080fd5b505afa158015614169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418d91906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156141c557600080fd5b505afa1580156141d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141fd919061552b565b50505050509150915061420e61510b565b6000806142328b60008151811061422157fe5b602002602001015160400151614b10565b6001600160a01b031683528a5161425f908c9060009061424e57fe5b602002602001015160200151614b10565b6001600160a01b031660208401528a518b9060009061427a57fe5b60200260200101516060015162ffffff1691508a60018c51038151811061429d57fe5b60200260200101516060015162ffffff16905060005b8b518161ffff1610156146c45760008c8261ffff16815181106142d257fe5b6020026020010151600001516001600160b81b031611156143af57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab888e8461ffff168151811061432257fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161434a9190615d3f565b6101806040518083038186803b15801561436357600080fd5b505afa158015614377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439b9190615659565b50505050975050505050505050808a019950505b6143b761510b565b6143ca8d8361ffff168151811061422157fe5b6001600160a01b031681528c516143eb908e9061ffff851690811061424e57fe5b6001600160a01b031660208201528c518d9061ffff841690811061440b57fe5b60200260200101516040015160020b8660020b136144cb57838d8361ffff168151811061443457fe5b60200260200101516060015162ffffff1661448561447861446889600001518a602001518b600001518c6020015103613ba5565b8551602087015190810390613ba5565b8451600160601b90613ba5565b028161448d57fe5b04898361ffff168151811061449e57fe5b602002602001018181525050888261ffff16815181106144ba57fe5b60200260200101518c019b506146bb565b8c8261ffff16815181106144db57fe5b60200260200101516020015160020b8660020b1261457e57828d8361ffff168151811061450457fe5b60200260200101516060015162ffffff166145388360000151846020015103600160601b89600001518a6020015103613ba5565b028161454057fe5b04888361ffff168151811061455157fe5b602002602001018181525050878261ffff168151811061456d57fe5b60200260200101518b019a506146bb565b838d8361ffff168151811061458f57fe5b60200260200101516060015162ffffff166145ee6145da6145c389600001518a602001518b600001518c6020015103613ba5565b60208601516001600160a01b038d16810390613ba5565b600160601b8b6001600160a01b0316613ba5565b02816145f657fe5b04898361ffff168151811061460757fe5b602002602001018181525050828d8361ffff168151811061462457fe5b60200260200101516060015162ffffff1661465d83600001518a6001600160a01b031603600160601b89600001518a6020015103613ba5565b028161466557fe5b04888361ffff168151811061467657fe5b602002602001018181525050888261ffff168151811061469257fe5b60200260200101518c019b50878261ffff16815181106146ae57fe5b60200260200101518b019a505b506001016142b3565b50505050505091939590929450565b6000808851600114156146ea575084905083614a90565b6146f261510b565b604051630b4c774160e11b8152600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290614790907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b1580156147a857600080fd5b505afa1580156147bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e091906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561481857600080fd5b505afa15801561482c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614850919061552b565b50505050505090506148b18161486c8d60008151811061422157fe5b61487c8e60008151811061424e57fe5b61489b8e8b60008151811061488d57fe5b60200260200101518e613ba5565b6148ac8e8b60008151811061488d57fe5b614e29565b6001600160801b031682528a516000198101906149179083906148da908f908590811061422157fe5b6148e98f858151811061424e57fe5b6149078f8c87815181106148f957fe5b60200260200101518f613ba5565b6148ac8f8c88815181106148f957fe5b6001600160801b031660208401528b518c9060009061493257fe5b60200260200101516060015162ffffff168360200151028c828151811061495557fe5b60200260200101516060015162ffffff168460000151021115614a025760008c60008151811061498157fe5b60200260200101516060015162ffffff1684602001510211156149f5576149ee898d83815181106149ae57fe5b60200260200101516060015162ffffff168560000151028e6000815181106149d257fe5b60200260200101516060015162ffffff16866020015102613ba5565b94506149fa565b600094505b879350614a8c565b88945060008c8281518110614a1357fe5b60200260200101516060015162ffffff168460000151021115614a8757614a80888d600081518110614a4157fe5b60200260200101516060015162ffffff168560200151028e8481518110614a6457fe5b60200260200101516060015162ffffff16866000015102613ba5565b9350614a8c565b600093505b5050505b97509795505050505050565b6000614ad68260405180604001604052806002815260200161523760f01b815250856001600160a01b0316614eed9092919063ffffffff16565b805190915015613d4e5780806020019051810190614af491906153ab565b613d4e5760405162461bcd60e51b81526004016105cb90615a82565b60008060008360020b12614b27578260020b614b2f565b8260020b6000035b9050620d89e8811115614b545760405162461bcd60e51b81526004016105cb906159b9565b600060018216614b6857600160801b614b7a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614bae576ffff97272373d413259a46990580e213a0260801c5b6004821615614bcd576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614bec576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614c0b576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614c2a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614c49576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614c68576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614c88576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614ca8576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614cc8576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614ce8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614d08576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614d28576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614d48576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614d68576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614d89576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614da9576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614dc8576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614de5576b048a170391f7dc42444e8fa20260801c5b60008460020b1315614e00578060001981614dfc57fe5b0490505b640100000000810615614e14576001614e17565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614e49579293925b846001600160a01b0316866001600160a01b031611614e7457614e6d858585614f04565b9050614ee4565b836001600160a01b0316866001600160a01b03161015614ed6576000614e9b878686614f04565b90506000614eaa878986614f67565b9050806001600160801b0316826001600160801b031610614ecb5780614ecd565b815b92505050614ee4565b614ee1858584614f67565b90505b95945050505050565b6060614efc8484600085614fa4565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614f24579192915b6000614f47856001600160a01b0316856001600160a01b0316600160601b613ba5565b9050614ee4614f6284838888036001600160a01b0316613ba5565b615064565b6000826001600160a01b0316846001600160a01b03161115614f87579192915b614efc614f6283600160601b8787036001600160a01b0316613ba5565b606082471015614fc65760405162461bcd60e51b81526004016105cb9061590d565b614fcf8561507a565b614feb5760405162461bcd60e51b81526004016105cb90615963565b600080866001600160a01b031685876040516150079190615755565b60006040518083038185875af1925050503d8060008114615044576040519150601f19603f3d011682016040523d82523d6000602084013e615049565b606091505b5091509150615059828286615080565b979650505050505050565b806001600160801b03811681146117cb57600080fd5b3b151590565b6060831561508f5750816112ff565b82511561509f5782518084602001fd5b8160405162461bcd60e51b81526004016105cb919061580f565b50805460008255906000526020600020908101906150d79190615125565b50565b60405180608001604052806000815260200160006001600160801b0316815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b5b8082111561513a5760008155600101615126565b5090565b80516117cb81615df9565b80356117cb81615e1c565b80516117cb81615e1c565b80516001600160801b03811681146117cb57600080fd5b80356117cb81615e3b565b80516117cb81615e3b565b60006020828403121561519d578081fd5b81356112ff81615df9565b6000602082840312156151b9578081fd5b81516112ff81615df9565b600080604083850312156151d6578081fd5b82356151e181615df9565b915060208301356151f181615df9565b809150509250929050565b600080600060608486031215615210578081fd5b833561521b81615df9565b9250602084013561522b81615df9565b929592945050506040919091013590565b6000806040838503121561524e578182fd5b823561525981615df9565b915060208301356151f181615e0e565b6000806040838503121561527b578182fd5b823561528681615df9565b946020939093013593505050565b600060208083850312156152a6578182fd5b823567ffffffffffffffff808211156152bd578384fd5b818501915085601f8301126152d0578384fd5b8135818111156152dc57fe5b6152e98485830201615da9565b818152848101908486016080808502870188018b1015615307578889fd5b8896505b8487101561539c5780828c031215615321578889fd5b60408051828101818110898211171561533657fe5b825283356001600160b81b038116811461534e578b8cfd5b8152838a013561535d81615e1c565b818b015261536c848301615149565b828201526060915061537f828501615176565b91810191909152845260019690960195928701929081019061530b565b50909998505050505050505050565b6000602082840312156153bc578081fd5b81516112ff81615e0e565b600060c082840312156153d8578081fd5b50919050565b600060c082840312156153ef578081fd5b60405160c0810181811067ffffffffffffffff8211171561540c57fe5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013561544181615df9565b608082015260a0928301359281019290925250919050565b600060a082840312156153d8578081fd5b600060a0828403121561547b578081fd5b60405160a0810181811067ffffffffffffffff8211171561549857fe5b806040525082358152602083013560208201526040830135604082015260608301356154c381615df9565b60608201526080928301359281019290925250919050565b6000806000606084860312156154ef578081fd5b6154f88461515f565b925060208401519150604084015190509250925092565b600060208284031215615520578081fd5b81356112ff81615e2b565b600080600080600080600060e0888a031215615545578485fd5b875161555081615df9565b602089015190975061556181615e1c565b604089015190965061557281615e2b565b606089015190955061558381615e2b565b608089015190945061559481615e2b565b60a089015190935060ff811681146155aa578283fd5b60c08901519092506155bb81615e0e565b8091505092959891949750929550565b6000602082840312156155dc578081fd5b5035919050565b6000602082840312156155f4578081fd5b5051919050565b60008060008060808587031215615610578182fd5b845193506156206020860161515f565b6040860151606090960151949790965092505050565b60008060408385031215615648578182fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f03121561567b578586fd5b8c516bffffffffffffffffffffffff81168114615696578687fd5b9b506156a460208e0161513e565b9a506156b260408e0161513e565b99506156c060608e0161513e565b98506156ce60808e01615181565b97506156dc60a08e01615154565b96506156ea60c08e01615154565b95506156f860e08e0161515f565b94506101008d015193506101208d015192506157176101408e0161515f565b91506157266101608e0161515f565b90509295989b509295989b509295989b565b6001600160a01b03169052565b60020b9052565b62ffffff169052565b60008251615767818460208701615dcd565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252825180602084015261582e816040850160208701615dcd565b601f01601f19169190910160400192915050565b60208082526003908201526205233360ec1b604082015260600190565b60208082526003908201526252313360e81b604082015260600190565b60208082526003908201526229191960e91b604082015260600190565b60208082526003908201526252323360e81b604082015260600190565b60208082526003908201526252323560e81b604082015260600190565b60208082526003908201526252313960e81b604082015260600190565b60208082526003908201526229189b60e91b604082015260600190565b602080825260029082015261148d60f21b604082015260600190565b602080825260039082015262148c4d60ea1b604082015260600190565b60208082526003908201526252313160e81b604082015260600190565b602080825260029082015261523560f01b604082015260600190565b60208082526003908201526252323160e81b604082015260600190565b60208082526003908201526205231360ec1b604082015260600190565b6020808252600190820152601560fa1b604082015260600190565b60208082526003908201526252313560e81b604082015260600190565b6020808252600390820152620a462760eb1b604082015260600190565b602080825260039082015262148c8d60ea1b604082015260600190565b60208082526003908201526229191b60e91b604082015260600190565b6020808252600390820152620a464760eb1b604082015260600190565b60208082526003908201526252323960e81b604082015260600190565b6020808252600290820152610a4760f31b604082015260600190565b60208082526003908201526252313760e81b604082015260600190565b60208082526003908201526229189960e91b604082015260600190565b60208082526003908201526205232360ec1b604082015260600190565b60208082526003908201526252323760e81b604082015260600190565b602080825260029082015261291b60f11b604082015260600190565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b600060a082019050825182526001600160801b03602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c0808401519083015260e09283015116918101919091526101000190565b600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b600061016082019050615c75828451615738565b6020830151615c876020840182615738565b506040830151615c9a604084018261574c565b506060830151615cad6060840182615745565b506080830151615cc06080840182615745565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615cfe82850182615738565b505061014092830151919092015290565b6001600160801b039390931683526020830191909152604082015260600190565b61ffff91909116815260200190565b6001600160b81b0391909116815260200190565b6001600160b81b03949094168452600292830b6020850152910b604083015262ffffff16606082015260800190565b62ffffff91909116815260200190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715615dc557fe5b604052919050565b60005b83811015615de8578181015183820152602001615dd0565b83811115613f715750506000910152565b6001600160a01b03811681146150d757600080fd5b80151581146150d757600080fd5b8060020b81146150d757600080fd5b61ffff811681146150d757600080fd5b62ffffff811681146150d757600080fdfea2646970667358221220e16fb29af291438b541627e21439b7cad8698cb0a4ade27e0e568ca5d67d489964736f6c63430007060033", + "deployedBytecode": "0x6080604052600436106101855760003560e01c806370e032b1116100d1578063a2d96f5f1161008a578063dd62ed3e11610064578063dd62ed3e14610455578063ddca3f4314610475578063f2fde38b14610497578063fdb5a03e146104b75761018c565b8063a2d96f5f14610400578063a9059cbb14610420578063d21220a7146104405761018c565b806370e032b1146103615780637cf134cb146103745780638da5cb5b146103965780638e005553146103ab57806395d89b41146103cb5780639f3e8b34146103e05761018c565b8063223b3b7a1161013e578063313ce56711610118578063313ce567146102df57806333bc230a146103015780634623c91d1461032157806370a08231146103415761018c565b8063223b3b7a1461027f57806323b872dd1461029f578063276cd920146102bf5761018c565b806306fdde0314610191578063095ea7b3146101bc5780630dfe1681146101e9578063135d4f241461020b578063157238661461022d57806318160ddd1461025d5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66104cc565b6040516101b3919061580f565b60405180910390f35b3480156101c857600080fd5b506101dc6101d7366004615269565b610562565b6040516101b39190615804565b3480156101f557600080fd5b506101fe610578565b6040516101b39190615771565b34801561021757600080fd5b5061022b610226366004615294565b61059c565b005b34801561023957600080fd5b5061024d6102483660046155cb565b611231565b6040516101b39493929190615d53565b34801561026957600080fd5b50610272611280565b6040516101b39190615d92565b34801561028b57600080fd5b506101dc61029a36600461518c565b611286565b3480156102ab57600080fd5b506101dc6102ba3660046151fc565b61129b565b3480156102cb57600080fd5b5061022b6102da366004615459565b611306565b3480156102eb57600080fd5b506102f46114c2565b6040516101b39190615d9b565b34801561030d57600080fd5b5061022b61031c3660046153c7565b6114c7565b34801561032d57600080fd5b5061022b61033c36600461523c565b61175c565b34801561034d57600080fd5b5061027261035c36600461518c565b6117b1565b61022b61036f3660046153c7565b6117d0565b34801561038057600080fd5b50610389611e9b565b6040516101b39190615d82565b3480156103a257600080fd5b506101fe611ebf565b3480156103b757600080fd5b5061022b6103c636600461550f565b611ece565b3480156103d757600080fd5b506101a6611f16565b3480156103ec57600080fd5b506102726103fb36600461518c565b611f77565b34801561040c57600080fd5b5061022b61041b366004615459565b611f89565b34801561042c57600080fd5b506101dc61043b366004615269565b61234e565b34801561044c57600080fd5b506101fe61235b565b34801561046157600080fd5b506102726104703660046151c4565b61237f565b34801561048157600080fd5b5061048a6123aa565b6040516101b39190615d30565b3480156104a357600080fd5b5061022b6104b236600461518c565b6123b9565b3480156104c357600080fd5b5061022b612405565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b820191906000526020600020905b81548152906001019060200180831161053b57829003601f168201915b5050505050905090565b600061056f338484612f97565b50600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b336000818152602081905260409020544310156105d45760405162461bcd60e51b81526004016105cb90615842565b60405180910390fd5b6005546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105cb9061597f565b6040805160a08101825260045481526000602082018190529181019190915230606082015260001960808201526106348161304b565b50505060006008805480602002602001604051908101604052809291908181526020016000905b828210156106cf57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff16606082015282526001909201910161065b565b50505050905060005b81518110156107765773c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166342966c6883838151811061071057fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016107389190615d3f565b600060405180830381600087803b15801561075257600080fd5b505af1158015610766573d6000803e3d6000fd5b5050600190920191506106d89050565b50610783600860006150b9565b60005b84518110156109735784818151811061079b57fe5b60200260200101516040015160020b8582815181106107b657fe5b60200260200101516020015160020b136107e25760405162461bcd60e51b81526004016105cb90615abb565b801561083f578460018203815181106107f757fe5b60200260200101516040015160020b85828151811061081257fe5b60200260200101516020015160020b131561083f5760405162461bcd60e51b81526004016105cb90615abb565b600085828151811061084d57fe5b60200260200101516060015162ffffff161161087b5760405162461bcd60e51b81526004016105cb9061599c565b84818151811061088757fe5b6020026020010151600001516001600160b81b03166000146108bb5760405162461bcd60e51b81526004016105cb90615946565b60088582815181106108c957fe5b60209081029190910181015182546001818101855560009485529383902082519101805493830151604084015160609094015162ffffff908116600160e81b026001600160e81b03600296870b8316600160d01b0262ffffff60d01b199490970b909216600160b81b0262ffffff60b81b196001600160b81b039096166001600160b81b031990981697909717949094169590951716929092179290921691909117905501610786565b506040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906109c3903090600401615771565b60206040518083038186803b1580156109db57600080fd5b505afa1580156109ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1391906155e3565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610a639190615771565b60206040518083038186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab391906155e3565b9050600080610afa6040518060c001604052808681526020018581526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152958290039594819003949193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290610ba9907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b158015610bc157600080fd5b505afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c3157600080fd5b505afa158015610c45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c69919061552b565b50505050505090508284028286021115610e8a57600082610caf610c9b86856001600160a01b0316600160601b613ba5565b846001600160a01b0316600160601b613ba5565b018486028488020381610cbe57fe5b049050610d096001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991610dea9190600401615bb4565b602060405180830381600087803b158015610e0457600080fd5b505af1925050508015610e34575060408051601f3d908101601f19168201909252610e31918101906155e3565b60015b610e3d57610e3f565b505b610e886001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b82840282860210156110a357600083610ec8610eb485600160601b866001600160a01b0316613ba5565b600160601b856001600160a01b0316613ba5565b018387028587020381610ed757fe5b049050610f226001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf389916110039190600401615bb4565b602060405180830381600087803b15801561101d57600080fd5b505af192505050801561104d575060408051601f3d908101601f1916820190925261104a918101906155e3565b60015b61105657611058565b505b6110a16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906110ef903090600401615771565b60206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113f91906155e3565b6040516370a0823160e01b81529095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061118e903090600401615771565b60206040518083038186803b1580156111a657600080fd5b505afa1580156111ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de91906155e3565b93506112226040518060c001604052808781526020018681526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b50505050505050505050505050565b6008818154811061124157600080fd5b6000918252602090912001546001600160b81b0381169150600160b81b8104600290810b91600160d01b810490910b90600160e81b900462ffffff1684565b60045490565b60036020526000908152604090205460ff1681565b60006112a8848484613d53565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156112ec5760405162461bcd60e51b81526004016105cb906159d4565b6112f98533858403612f97565b60019150505b9392505050565b336000818152602081905260409020544310156113355760405162461bcd60e51b81526004016105cb90615842565b61133e33613e4f565b816080013542111561134f57600080fd5b6000808061136a6113653687900387018761546a565b61304b565b9194509250905061137c338635613e6e565b84602001358310156113a05760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156113c45760405162461bcd60e51b81526004016105cb90615a9e565b6113f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b61142c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df8386866040516114b393929190615d0f565b60405180910390a35050505050565b601290565b336000818152602081905260409020544310156114f65760405162461bcd60e51b81526004016105cb90615842565b6114ff33613e4f565b8160a0013542111561151057600080fd5b6115466001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308535613f50565b61157f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633306020860135613f50565b600080808061159b611596368890038801886153de565b613483565b9350935093509350816001600160801b0316600014156115cd576115c833826001600160801b0316613f77565b6115f5565b6115f5336115f0836001600160801b0316600454866001600160801b0316613ba5565b613f77565b85604001358410156116195760405162461bcd60e51b81526004016105cb906158f0565b856060013583101561163d5760405162461bcd60e51b81526004016105cb90615a9e565b853584101561167e5761167e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338835879003613f31565b82866020013511156116c5576116c56001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016336020890135869003613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be83878760405161174c93929190615d0f565b60405180910390a3505050505050565b6005546001600160a01b031633146117865760405162461bcd60e51b81526004016105cb9061597f565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600160205260409020545b919050565b60095460ff16156117f35760405162461bcd60e51b81526004016105cb90615929565b6009805460ff191660011790553360008181526020819052604090205443101561182f5760405162461bcd60e51b81526004016105cb90615842565b61183833613e4f565b8160a0013542111561184957600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156119995781353411156118cc5760405133908335340380156108fc02916000818181858888f193505050501580156118c6573d6000803e3d6000fd5b506118ec565b348235146118ec5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083600001356040518263ffffffff1660e01b81526004016000604051808303818588803b15801561193f57600080fd5b505af1158015611953573d6000803e3d6000fd5b506119949350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050306020860135613f50565b611b01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146119f55760405162461bcd60e51b81526004016105cb906158d3565b8160200135341115611a395760405133906020840135340380156108fc02916000818181858888f19350505050158015611a33573d6000803e3d6000fd5b50611a5c565b81602001353414611a5c5760405162461bcd60e51b81526004016105cb906159f1565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db083602001356040518263ffffffff1660e01b81526004016000604051808303818588803b158015611aaf57600080fd5b505af1158015611ac3573d6000803e3d6000fd5b50611b019350506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150339050308535613f50565b6000808080611b18611596368890038801886153de565b9350935093509350816001600160801b031660001415611b4a57611b4533826001600160801b0316613f77565b611b6d565b611b6d336115f0836001600160801b0316600454866001600160801b0316613ba5565b8560400135841015611b915760405162461bcd60e51b81526004016105cb906158f0565b8560600135831015611bb55760405162461bcd60e51b81526004016105cb90615a9e565b853584900360208701358490038115611cdd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611ca957604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611c44908590600401615d92565b600060405180830381600087803b158015611c5e57600080fd5b505af1158015611c72573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015611ca3573d6000803e3d6000fd5b50611cdd565b611cdd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b8015611df8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21415611dc457604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90611d5f908490600401615d92565b600060405180830381600087803b158015611d7957600080fd5b505af1158015611d8d573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611dbe573d6000803e3d6000fd5b50611df8565b611df86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff1cc7b6dd2da0338fc327ee7647aeb5e744f007a5bbf0628a0033c6b5ffaf0be858989604051611e7f93929190615d0f565b60405180910390a350506009805460ff19169055505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6005546001600160a01b031690565b6005546001600160a01b03163314611ef85760405162461bcd60e51b81526004016105cb9061597f565b6009805461ffff9092166101000262ffff0019909216919091179055565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105585780601f1061052d57610100808354040283529160200191610558565b60006020819052908152604090205481565b60095460ff1615611fac5760405162461bcd60e51b81526004016105cb90615929565b6009805460ff1916600117905533600081815260208190526040902054431015611fe85760405162461bcd60e51b81526004016105cb90615842565b611ff133613e4f565b816080013542111561200257600080fd5b600080806120186113653687900387018761546a565b9194509250905061202a338635613e6e565b846020013583101561204e5760405162461bcd60e51b81526004016105cb906158f0565b84604001358210156120725760405162461bcd60e51b81526004016105cb90615a9e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2141561218757604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906120ee908690600401615d92565b600060405180830381600087803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f1935050505015801561214d573d6000803e3d6000fd5b506121826001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163384613f31565b6122ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146121e35760405162461bcd60e51b81526004016105cb906158d3565b604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d9061221a908590600401615d92565b600060405180830381600087803b15801561223457600080fd5b505af1158015612248573d6000803e3d6000fd5b505060405133925084156108fc02915084906000818181858888f19350505050158015612279573d6000803e3d6000fd5b506122ae6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385613f31565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff56fda5b6bb8f75f807e6a868835d0a42a72be51a6f15fd874acdd3cbe3087df83868660405161233593929190615d0f565b60405180910390a350506009805460ff19169055505050565b600061056f338484613d53565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600954610100900461ffff1681565b6005546001600160a01b031633146123e35760405162461bcd60e51b81526004016105cb9061597f565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526003602052604090205460ff166124345760405162461bcd60e51b81526004016105cb9061585f565b336000818152602081905260409020544310156124635760405162461bcd60e51b81526004016105cb90615842565b60006008805480602002602001604051908101604052809291908181526020016000905b828210156124fb57600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101612487565b505050509050600080600080600090505b84518110156126695784818151811061252157fe5b6020026020010151600001516001600160b81b0316600014156125565760405162461bcd60e51b81526004016105cb90615ad8565b84818151811061256257fe5b60200260200101516060015162ffffff168401935060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808a87815181106125b457fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526126069190600401615b2e565b6040805180830381600087803b15801561261f57600080fd5b505af1158015612633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126579190615636565b9501949390930192505060010161250c565b5060095461271061010090910461ffff16838102829004919083020481156126c5576005546126c5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561270557600554612705906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612751903090600401615771565b60206040518083038186803b15801561276957600080fd5b505afa15801561277d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a191906155e3565b6040516370a0823160e01b81529094506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906127f0903090600401615771565b60206040518083038186803b15801561280857600080fd5b505afa15801561281c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284091906155e3565b92506000806128876040518060c001604052808881526020018781526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050604051630b4c774160e11b8152978290039796819003969193509150600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290612936907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561294e57600080fd5b505afa158015612962573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298691906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156129be57600080fd5b505afa1580156129d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f6919061552b565b50505050505090508286028288021115612c0357600082612a28610c9b86856001600160a01b0316600160601b613ba5565b01848802848a020381612a3757fe5b049050612a826001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612b639190600401615bb4565b602060405180830381600087803b158015612b7d57600080fd5b505af1925050508015612bad575060408051601f3d908101601f19168201909252612baa918101906155e3565b60015b612bb657612bb8565b505b612c016001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b8286028288021015612e0857600083612c2d610eb485600160601b866001600160a01b0316613ba5565b018389028589020381612c3c57fe5b049050612c876001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c0586156483613c54565b60408051610100810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f00000000000000000000000000000000000000000000000000000000000000001660208201527f000000000000000000000000000000000000000000000000000000000000000062ffffff1681830152306060820152600019608082015260a08101839052600060c0820181905260e0820152905163414bf38960e01b815273e592427a0aece92de3edee1f18e0157c058615649163414bf38991612d689190600401615bb4565b602060405180830381600087803b158015612d8257600080fd5b505af1925050508015612db2575060408051601f3d908101601f19168201909252612daf918101906155e3565b60015b612dbb57612dbd565b505b612e066001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673e592427a0aece92de3edee1f18e0157c058615646000613c54565b505b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612e54903090600401615771565b60206040518083038186803b158015612e6c57600080fd5b505afa158015612e80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea491906155e3565b6040516370a0823160e01b81529097506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612ef3903090600401615771565b60206040518083038186803b158015612f0b57600080fd5b505afa158015612f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4391906155e3565b9550612f876040518060c001604052808981526020018881526020016000815260200160008152602001306001600160a01b03168152602001600019815250613483565b5050505050505050505050505050565b6001600160a01b038316612fbd5760405162461bcd60e51b81526004016105cb90615a48565b6001600160a01b038216612fe35760405162461bcd60e51b81526004016105cb90615a65565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061303e908590615d92565b60405180910390a3505050565b6000806000806008805480602002602001604051908101604052809291908181526020016000905b828210156130e757600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff166060820152825260019092019101613073565b50505050905060008060005b83518161ffff1610156133dc57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab88868461ffff168151811061313557fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161315d9190615d3f565b6101806040518083038186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ae9190615659565b5050505097505050505050505060006131d7826001600160801b03168b60000151600454613ba5565b905060006040518060a00160405280888661ffff16815181106131f657fe5b6020026020010151600001516001600160b81b03168152602001836001600160801b0316815260200160008152602001600081526020018c60800151815250905060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b0316630c49ccbe846040518263ffffffff1660e01b815260040161327a9190615b71565b6040805180830381600087803b15801561329357600080fd5b505af11580156132a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cb9190615636565b9150915060008073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b031663fc6f786560405180608001604052808e8c61ffff168151811061331057fe5b602090810291909101810151516001600160b81b0316825230908201526001600160801b036040808301829052606090920152516001600160e01b031960e084901b1681526133629190600401615b2e565b6040805180830381600087803b15801561337b57600080fd5b505af115801561338f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b39190615636565b9e85019e9d84019d9c9096019b93909503989098019750900394909401935050506001016130f3565b5060095461271061010090910461ffff16928302819004929190910204811561343957600554613439906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911684613f31565b801561347957600554613479906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116911683613f31565b5050509193909250565b60008060008060006008805480602002602001604051908101604052809291908181526020016000905b8282101561352157600084815260209081902060408051608081018252918501546001600160b81b0381168352600160b81b8104600290810b810b810b84860152600160d01b8204810b810b900b91830191909152600160e81b900462ffffff1660608201528252600190920191016134ad565b50508851929350613574926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925073c36442b4a4522e871399cd717abdd847ab11fe889150613c54565b60208601516135c3906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169073c36442b4a4522e871399cd717abdd847ab11fe8890613c54565b6000806000835167ffffffffffffffff811180156135e057600080fd5b5060405190808252806020026020018201604052801561360a578160200160208202803683370190505b5090506000845167ffffffffffffffff8111801561362757600080fd5b50604051908082528060200260200182016040528015613651578160200160208202803683370190505b50905061365d8561400a565b919a509296509094509092509050831580159061367a5750600083115b1561369c57613696858b600001518c60200151878787876146d3565b90945092505b60005b85518161ffff161015613b065760006040518061016001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff168152602001888461ffff168151811061375357fe5b60200260200101516040015160020b8152602001888461ffff168151811061377757fe5b60200260200101516020015160020b815260200160008152602001600081526020016000815260200160008152602001306001600160a01b031681526020018d60a00151815250905060006040518060c00160405280898561ffff16815181106137dd57fe5b6020026020010151600001516001600160b81b03168152602001600081526020016000815260200160008152602001600081526020018e60a00151815250905060008711156138815761384c8d60000151868561ffff168151811061383e57fe5b602002602001015189613ba5565b60a08301819052602082015260408d015185516138749190879061ffff871690811061383e57fe5b60e0830181905260608201525b85156138e3576138ad8d60200151858561ffff168151811061389f57fe5b602002602001015188613ba5565b60c08301819052604082015260608d015184516138d59190869061ffff871690811061389f57fe5b610100830181905260808201525b60008260a0015111806138fa575060008260c00151115b15613afc576139076150da565b888461ffff168151811061391757fe5b6020026020010151600001516001600160b81b031660001415613a3957604051634418b22b60e11b815273c36442b4a4522e871399cd717abdd847ab11fe889063883164569061396b908690600401615c61565b608060405180830381600087803b15801561398557600080fd5b505af19250505080156139b5575060408051601f3d908101601f191682019092526139b2918101906155fb565b60015b6139be576139dc565b9284526001600160801b039091166020840152604083015260608201525b80516008805461ffff87169081106139f057fe5b60009182526020918290200180546001600160b81b0319166001600160b81b03939093169290921790915560408201516060830151918301519e019d9c019b9990990198613afa565b60405163219f5d1760e01b815273c36442b4a4522e871399cd717abdd847ab11fe889063219f5d1790613a70908590600401615c1d565b606060405180830381600087803b158015613a8a57600080fd5b505af1925050508015613aba575060408051601f3d908101601f19168201909252613ab7918101906154db565b60015b613ac357613ade565b6001600160801b039092166020840152604083015260608201525b80604001518d019c5080606001518c019b5080602001518a0199505b505b505060010161369f565b50613b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b613b996001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001673c36442b4a4522e871399cd717abdd847ab11fe886000613c54565b50505050509193509193565b6000808060001985870986860292508281109083900303905080613bdb5760008411613bd057600080fd5b5082900490506112ff565b808411613be757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b801580613cdc5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90613c8a9030908690600401615785565b60206040518083038186803b158015613ca257600080fd5b505afa158015613cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cda91906155e3565b155b613cf85760405162461bcd60e51b81526004016105cb90615b12565b613d4e8363095ea7b360e01b8484604051602401613d179291906157eb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a9c565b505050565b6001600160a01b038316613d795760405162461bcd60e51b81526004016105cb9061587c565b6001600160a01b038216613d9f5760405162461bcd60e51b81526004016105cb90615899565b613daa838383613d4e565b6001600160a01b03831660009081526001602052604090205481811015613de35760405162461bcd60e51b81526004016105cb90615a0e565b6001600160a01b0380851660008181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613e41908690615d92565b60405180910390a350505050565b6001600160a01b03166000908152602081905260409020436001019055565b6001600160a01b038216613e945760405162461bcd60e51b81526004016105cb90615a2b565b613ea082600083613d4e565b6001600160a01b03821660009081526001602052604090205481811015613ed95760405162461bcd60e51b81526004016105cb90615af5565b6001600160a01b0383166000818152600160205260408082208585039055600480548690039055519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061303e908690615d92565b613d4e8363a9059cbb60e01b8484604051602401613d179291906157eb565b613f71846323b872dd60e01b858585604051602401613d17939291906157c7565b50505050565b6001600160a01b038216613f9d5760405162461bcd60e51b81526004016105cb906158b6565b613fa960008383613d4e565b60048054820190556001600160a01b038216600081815260016020526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613ffe908590615d92565b60405180910390a35050565b6000806000606080855167ffffffffffffffff8111801561402a57600080fd5b50604051908082528060200260200182016040528015614054578160200160208202803683370190505b509150855167ffffffffffffffff8111801561406f57600080fd5b50604051908082528060200260200182016040528015614099578160200160208202803683370190505b50604051630b4c774160e11b81529091506000908190731f98431c8ad98523631ae4a59f267346ea31f98490631698ee829061413d907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b15801561415557600080fd5b505afa158015614169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418d91906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156141c557600080fd5b505afa1580156141d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141fd919061552b565b50505050509150915061420e61510b565b6000806142328b60008151811061422157fe5b602002602001015160400151614b10565b6001600160a01b031683528a5161425f908c9060009061424e57fe5b602002602001015160200151614b10565b6001600160a01b031660208401528a518b9060009061427a57fe5b60200260200101516060015162ffffff1691508a60018c51038151811061429d57fe5b60200260200101516060015162ffffff16905060005b8b518161ffff1610156146c45760008c8261ffff16815181106142d257fe5b6020026020010151600001516001600160b81b031611156143af57600073c36442b4a4522e871399cd717abdd847ab11fe886001600160a01b03166399fbab888e8461ffff168151811061432257fe5b6020026020010151600001516040518263ffffffff1660e01b815260040161434a9190615d3f565b6101806040518083038186803b15801561436357600080fd5b505afa158015614377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439b9190615659565b50505050975050505050505050808a019950505b6143b761510b565b6143ca8d8361ffff168151811061422157fe5b6001600160a01b031681528c516143eb908e9061ffff851690811061424e57fe5b6001600160a01b031660208201528c518d9061ffff841690811061440b57fe5b60200260200101516040015160020b8660020b136144cb57838d8361ffff168151811061443457fe5b60200260200101516060015162ffffff1661448561447861446889600001518a602001518b600001518c6020015103613ba5565b8551602087015190810390613ba5565b8451600160601b90613ba5565b028161448d57fe5b04898361ffff168151811061449e57fe5b602002602001018181525050888261ffff16815181106144ba57fe5b60200260200101518c019b506146bb565b8c8261ffff16815181106144db57fe5b60200260200101516020015160020b8660020b1261457e57828d8361ffff168151811061450457fe5b60200260200101516060015162ffffff166145388360000151846020015103600160601b89600001518a6020015103613ba5565b028161454057fe5b04888361ffff168151811061455157fe5b602002602001018181525050878261ffff168151811061456d57fe5b60200260200101518b019a506146bb565b838d8361ffff168151811061458f57fe5b60200260200101516060015162ffffff166145ee6145da6145c389600001518a602001518b600001518c6020015103613ba5565b60208601516001600160a01b038d16810390613ba5565b600160601b8b6001600160a01b0316613ba5565b02816145f657fe5b04898361ffff168151811061460757fe5b602002602001018181525050828d8361ffff168151811061462457fe5b60200260200101516060015162ffffff1661465d83600001518a6001600160a01b031603600160601b89600001518a6020015103613ba5565b028161466557fe5b04888361ffff168151811061467657fe5b602002602001018181525050888261ffff168151811061469257fe5b60200260200101518c019b50878261ffff16815181106146ae57fe5b60200260200101518b019a505b506001016142b3565b50505050505091939590929450565b6000808851600114156146ea575084905083614a90565b6146f261510b565b604051630b4c774160e11b8152600090731f98431c8ad98523631ae4a59f267346ea31f98490631698ee8290614790907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161579f565b60206040518083038186803b1580156147a857600080fd5b505afa1580156147bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e091906151a8565b6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561481857600080fd5b505afa15801561482c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614850919061552b565b50505050505090506148b18161486c8d60008151811061422157fe5b61487c8e60008151811061424e57fe5b61489b8e8b60008151811061488d57fe5b60200260200101518e613ba5565b6148ac8e8b60008151811061488d57fe5b614e29565b6001600160801b031682528a516000198101906149179083906148da908f908590811061422157fe5b6148e98f858151811061424e57fe5b6149078f8c87815181106148f957fe5b60200260200101518f613ba5565b6148ac8f8c88815181106148f957fe5b6001600160801b031660208401528b518c9060009061493257fe5b60200260200101516060015162ffffff168360200151028c828151811061495557fe5b60200260200101516060015162ffffff168460000151021115614a025760008c60008151811061498157fe5b60200260200101516060015162ffffff1684602001510211156149f5576149ee898d83815181106149ae57fe5b60200260200101516060015162ffffff168560000151028e6000815181106149d257fe5b60200260200101516060015162ffffff16866020015102613ba5565b94506149fa565b600094505b879350614a8c565b88945060008c8281518110614a1357fe5b60200260200101516060015162ffffff168460000151021115614a8757614a80888d600081518110614a4157fe5b60200260200101516060015162ffffff168560200151028e8481518110614a6457fe5b60200260200101516060015162ffffff16866000015102613ba5565b9350614a8c565b600093505b5050505b97509795505050505050565b6000614ad68260405180604001604052806002815260200161523760f01b815250856001600160a01b0316614eed9092919063ffffffff16565b805190915015613d4e5780806020019051810190614af491906153ab565b613d4e5760405162461bcd60e51b81526004016105cb90615a82565b60008060008360020b12614b27578260020b614b2f565b8260020b6000035b9050620d89e8811115614b545760405162461bcd60e51b81526004016105cb906159b9565b600060018216614b6857600160801b614b7a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614bae576ffff97272373d413259a46990580e213a0260801c5b6004821615614bcd576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614bec576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614c0b576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614c2a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614c49576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614c68576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614c88576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614ca8576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614cc8576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614ce8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614d08576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614d28576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614d48576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614d68576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614d89576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614da9576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614dc8576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614de5576b048a170391f7dc42444e8fa20260801c5b60008460020b1315614e00578060001981614dfc57fe5b0490505b640100000000810615614e14576001614e17565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b03161115614e49579293925b846001600160a01b0316866001600160a01b031611614e7457614e6d858585614f04565b9050614ee4565b836001600160a01b0316866001600160a01b03161015614ed6576000614e9b878686614f04565b90506000614eaa878986614f67565b9050806001600160801b0316826001600160801b031610614ecb5780614ecd565b815b92505050614ee4565b614ee1858584614f67565b90505b95945050505050565b6060614efc8484600085614fa4565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614f24579192915b6000614f47856001600160a01b0316856001600160a01b0316600160601b613ba5565b9050614ee4614f6284838888036001600160a01b0316613ba5565b615064565b6000826001600160a01b0316846001600160a01b03161115614f87579192915b614efc614f6283600160601b8787036001600160a01b0316613ba5565b606082471015614fc65760405162461bcd60e51b81526004016105cb9061590d565b614fcf8561507a565b614feb5760405162461bcd60e51b81526004016105cb90615963565b600080866001600160a01b031685876040516150079190615755565b60006040518083038185875af1925050503d8060008114615044576040519150601f19603f3d011682016040523d82523d6000602084013e615049565b606091505b5091509150615059828286615080565b979650505050505050565b806001600160801b03811681146117cb57600080fd5b3b151590565b6060831561508f5750816112ff565b82511561509f5782518084602001fd5b8160405162461bcd60e51b81526004016105cb919061580f565b50805460008255906000526020600020908101906150d79190615125565b50565b60405180608001604052806000815260200160006001600160801b0316815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b5b8082111561513a5760008155600101615126565b5090565b80516117cb81615df9565b80356117cb81615e1c565b80516117cb81615e1c565b80516001600160801b03811681146117cb57600080fd5b80356117cb81615e3b565b80516117cb81615e3b565b60006020828403121561519d578081fd5b81356112ff81615df9565b6000602082840312156151b9578081fd5b81516112ff81615df9565b600080604083850312156151d6578081fd5b82356151e181615df9565b915060208301356151f181615df9565b809150509250929050565b600080600060608486031215615210578081fd5b833561521b81615df9565b9250602084013561522b81615df9565b929592945050506040919091013590565b6000806040838503121561524e578182fd5b823561525981615df9565b915060208301356151f181615e0e565b6000806040838503121561527b578182fd5b823561528681615df9565b946020939093013593505050565b600060208083850312156152a6578182fd5b823567ffffffffffffffff808211156152bd578384fd5b818501915085601f8301126152d0578384fd5b8135818111156152dc57fe5b6152e98485830201615da9565b818152848101908486016080808502870188018b1015615307578889fd5b8896505b8487101561539c5780828c031215615321578889fd5b60408051828101818110898211171561533657fe5b825283356001600160b81b038116811461534e578b8cfd5b8152838a013561535d81615e1c565b818b015261536c848301615149565b828201526060915061537f828501615176565b91810191909152845260019690960195928701929081019061530b565b50909998505050505050505050565b6000602082840312156153bc578081fd5b81516112ff81615e0e565b600060c082840312156153d8578081fd5b50919050565b600060c082840312156153ef578081fd5b60405160c0810181811067ffffffffffffffff8211171561540c57fe5b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013561544181615df9565b608082015260a0928301359281019290925250919050565b600060a082840312156153d8578081fd5b600060a0828403121561547b578081fd5b60405160a0810181811067ffffffffffffffff8211171561549857fe5b806040525082358152602083013560208201526040830135604082015260608301356154c381615df9565b60608201526080928301359281019290925250919050565b6000806000606084860312156154ef578081fd5b6154f88461515f565b925060208401519150604084015190509250925092565b600060208284031215615520578081fd5b81356112ff81615e2b565b600080600080600080600060e0888a031215615545578485fd5b875161555081615df9565b602089015190975061556181615e1c565b604089015190965061557281615e2b565b606089015190955061558381615e2b565b608089015190945061559481615e2b565b60a089015190935060ff811681146155aa578283fd5b60c08901519092506155bb81615e0e565b8091505092959891949750929550565b6000602082840312156155dc578081fd5b5035919050565b6000602082840312156155f4578081fd5b5051919050565b60008060008060808587031215615610578182fd5b845193506156206020860161515f565b6040860151606090960151949790965092505050565b60008060408385031215615648578182fd5b505080516020909101519092909150565b6000806000806000806000806000806000806101808d8f03121561567b578586fd5b8c516bffffffffffffffffffffffff81168114615696578687fd5b9b506156a460208e0161513e565b9a506156b260408e0161513e565b99506156c060608e0161513e565b98506156ce60808e01615181565b97506156dc60a08e01615154565b96506156ea60c08e01615154565b95506156f860e08e0161515f565b94506101008d015193506101208d015192506157176101408e0161515f565b91506157266101608e0161515f565b90509295989b509295989b509295989b565b6001600160a01b03169052565b60020b9052565b62ffffff169052565b60008251615767818460208701615dcd565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252825180602084015261582e816040850160208701615dcd565b601f01601f19169190910160400192915050565b60208082526003908201526205233360ec1b604082015260600190565b60208082526003908201526252313360e81b604082015260600190565b60208082526003908201526229191960e91b604082015260600190565b60208082526003908201526252323360e81b604082015260600190565b60208082526003908201526252323560e81b604082015260600190565b60208082526003908201526252313960e81b604082015260600190565b60208082526003908201526229189b60e91b604082015260600190565b602080825260029082015261148d60f21b604082015260600190565b602080825260039082015262148c4d60ea1b604082015260600190565b60208082526003908201526252313160e81b604082015260600190565b602080825260029082015261523560f01b604082015260600190565b60208082526003908201526252323160e81b604082015260600190565b60208082526003908201526205231360ec1b604082015260600190565b6020808252600190820152601560fa1b604082015260600190565b60208082526003908201526252313560e81b604082015260600190565b6020808252600390820152620a462760eb1b604082015260600190565b602080825260039082015262148c8d60ea1b604082015260600190565b60208082526003908201526229191b60e91b604082015260600190565b6020808252600390820152620a464760eb1b604082015260600190565b60208082526003908201526252323960e81b604082015260600190565b6020808252600290820152610a4760f31b604082015260600190565b60208082526003908201526252313760e81b604082015260600190565b60208082526003908201526229189960e91b604082015260600190565b60208082526003908201526205232360ec1b604082015260600190565b60208082526003908201526252323760e81b604082015260600190565b602080825260029082015261291b60f11b604082015260600190565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b600060a082019050825182526001600160801b03602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b81516001600160a01b03908116825260208084015182169083015260408084015162ffffff16908301526060808401518216908301526080808401519083015260a0838101519083015260c0808401519083015260e09283015116918101919091526101000190565b600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b600061016082019050615c75828451615738565b6020830151615c876020840182615738565b506040830151615c9a604084018261574c565b506060830151615cad6060840182615745565b506080830151615cc06080840182615745565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615cfe82850182615738565b505061014092830151919092015290565b6001600160801b039390931683526020830191909152604082015260600190565b61ffff91909116815260200190565b6001600160b81b0391909116815260200190565b6001600160b81b03949094168452600292830b6020850152910b604083015262ffffff16606082015260800190565b62ffffff91909116815260200190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715615dc557fe5b604052919050565b60005b83811015615de8578181015183820152602001615dd0565b83811115613f715750506000910152565b6001600160a01b03811681146150d757600080fd5b80151581146150d757600080fd5b8060020b81146150d757600080fd5b61ffff811681146150d757600080fd5b62ffffff811681146150d757600080fdfea2646970667358221220e16fb29af291438b541627e21439b7cad8698cb0a4ade27e0e568ca5d67d489964736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.json new file mode 100644 index 00000000..9efd6496 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FixedPoint96.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FixedPoint96", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202908ae63db83a243e1047e39d92ea11280f08ea6228e5c7933f4e360938629da64736f6c63430007060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202908ae63db83a243e1047e39d92ea11280f08ea6228e5c7933f4e360938629da64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.json new file mode 100644 index 00000000..2aac59f7 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/FullMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FullMath", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c1ba5e944fe111da1797dd35f79743425b952ef5bdfbdee6a608952ac51099264736f6c63430007060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c1ba5e944fe111da1797dd35f79743425b952ef5bdfbdee6a608952ac51099264736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.json new file mode 100644 index 00000000..a94f30f3 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ICellarPoolShare.json @@ -0,0 +1,541 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ICellarPoolShare", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "AddedLiquidity", + "type": "event" + }, + { + "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": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "RemovedLiquidity", + "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": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityEthForUniV3", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarAddParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "addLiquidityForUniV3", + "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": "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": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "reinvest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityEthFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct ICellarPoolShare.CellarRemoveParams", + "name": "cellarParams", + "type": "tuple" + } + ], + "name": "removeLiquidityFromUniV3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "newFee", + "type": "uint16" + } + ], + "name": "setFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_validator", + "type": "address" + }, + { + "internalType": "bool", + "name": "value", + "type": "bool" + } + ], + "name": "setValidator", + "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": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.json new file mode 100644 index 00000000..181e4772 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "contracts/CellarPoolShare.sol", + "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": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.json new file mode 100644 index 00000000..578a791d --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/INonfungiblePositionManager.json @@ -0,0 +1,347 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "INonfungiblePositionManager", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amount0Max", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount1Max", + "type": "uint128" + } + ], + "internalType": "struct INonfungiblePositionManager.CollectParams", + "name": "params", + "type": "tuple" + } + ], + "name": "collect", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct INonfungiblePositionManager.DecreaseLiquidityParams", + "name": "params", + "type": "tuple" + } + ], + "name": "decreaseLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct INonfungiblePositionManager.IncreaseLiquidityParams", + "name": "params", + "type": "tuple" + } + ], + "name": "increaseLiquidity", + "outputs": [ + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct INonfungiblePositionManager.MintParams", + "name": "params", + "type": "tuple" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "positions", + "outputs": [ + { + "internalType": "uint96", + "name": "nonce", + "type": "uint96" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside0LastX128", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside1LastX128", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "tokensOwed0", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "tokensOwed1", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.json new file mode 100644 index 00000000..edd86f99 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/ISwapRouter.json @@ -0,0 +1,72 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISwapRouter", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinimum", + "type": "uint256" + }, + { + "internalType": "uint160", + "name": "sqrtPriceLimitX96", + "type": "uint160" + } + ], + "internalType": "struct ISwapRouter.ExactInputSingleParams", + "name": "params", + "type": "tuple" + } + ], + "name": "exactInputSingle", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.json new file mode 100644 index 00000000..3da17af8 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Factory.json @@ -0,0 +1,40 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV3Factory", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + } + ], + "name": "getPool", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.json new file mode 100644 index 00000000..5c1f2bd1 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IUniswapV3Pool.json @@ -0,0 +1,54 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUniswapV3Pool", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "inputs": [], + "name": "slot0", + "outputs": [ + { + "internalType": "uint160", + "name": "sqrtPriceX96", + "type": "uint160" + }, + { + "internalType": "int24", + "name": "tick", + "type": "int24" + }, + { + "internalType": "uint16", + "name": "observationIndex", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "observationCardinality", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "observationCardinalityNext", + "type": "uint16" + }, + { + "internalType": "uint8", + "name": "feeProtocol", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "unlocked", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.json new file mode 100644 index 00000000..8c4fd917 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/IWETH.json @@ -0,0 +1,31 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IWETH", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [ + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.json new file mode 100644 index 00000000..b49cadef --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/LiquidityAmounts.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LiquidityAmounts", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122063599c6af50fe29b9767c88cd546de9a11f041eb80a89150b8c9f09a9a7a08b564736f6c63430007060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122063599c6af50fe29b9767c88cd546de9a11f041eb80a89150b8c9f09a9a7a08b564736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.json new file mode 100644 index 00000000..adaad44f --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/SafeERC20.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220438dd78c74bed7ec3add6080b45338d07924da32e4597e65b195782d8291035364736f6c63430007060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220438dd78c74bed7ec3add6080b45338d07924da32e4597e65b195782d8291035364736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.dbg.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.dbg.json new file mode 100644 index 00000000..5d85d3fa --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/5e75fa0d261632fee0553f969fc894bc.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.json b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.json new file mode 100644 index 00000000..aaf94c1d --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CellarPoolShare.sol/TickMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TickMath", + "sourceName": "contracts/CellarPoolShare.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207cad927c8487d146a0707beeb42794aeee90c36d2af93e3aafd88781b072082e64736f6c63430007060033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207cad927c8487d146a0707beeb42794aeee90c36d2af93e3aafd88781b072082e64736f6c63430007060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.dbg.json b/integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.dbg.json new file mode 100644 index 00000000..dc4320b3 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.json b/integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.json new file mode 100644 index 00000000..4cf3c7d5 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/CosmosToken.sol/CosmosERC20.json @@ -0,0 +1,307 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CosmosERC20", + "sourceName": "contracts/CosmosToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_gravityAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "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": [ + { + "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": [], + "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": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526000196006553480156200001757600080fd5b5060405162000e7c38038062000e7c833981810160405260808110156200003d57600080fd5b8151602083018051604051929492938301929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001ca91600391850190620003b7565b508051620001e0906004906020840190620003b7565b50506005805460ff191660121790555062000204816001600160e01b036200022216565b62000218846006546200023860201b60201c565b505050506200045c565b6005805460ff191660ff92909216919091179055565b6001600160a01b03821662000294576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002ab600083836001600160e01b036200035016565b620002c7816002546200035560201b620008731790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002fa9183906200087362000355821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b600082820183811015620003b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003fa57805160ff19168380011785556200042a565b828001600101855582156200042a579182015b828111156200042a5782518255916020019190600101906200040d565b50620004389291506200043c565b5090565b6200045991905b8082111562000438576000815560010162000443565b90565b610a10806200046c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610408565b6101736004803603602081101561021b57600080fd5b50356001600160a01b031661045c565b6100b6610477565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d8565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610546565b610173600480360360408110156102a157600080fd5b506001600160a01b038135811691602001351661055a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610585565b8484610589565b50600192915050565b60025490565b600061037f848484610675565b6103f58461038b610585565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152600160205260408120906103c9610585565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107dc16565b610589565b5060019392505050565b60055460ff1690565b6000610363610415610585565b846103f08560016000610426610585565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087316565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e5610585565b846103f0856040518060600160405280602581526020016109b6602591396001600061050f610585565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107dc16565b6000610363610553610585565b8484610675565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ce5760405162461bcd60e51b81526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b0382166106135760405162461bcd60e51b81526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106ba5760405162461bcd60e51b815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b0382166106ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61070a8383836108d4565b61074d8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107dc16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610782908263ffffffff61087316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610830578181015183820152602001610818565b50505050905090810190601f16801561085d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200211864a65ba4fcada1107d4ae1ca69b48c7432ab34ae7fefc255e8844bc5c6e64736f6c63430006060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610408565b6101736004803603602081101561021b57600080fd5b50356001600160a01b031661045c565b6100b6610477565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d8565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610546565b610173600480360360408110156102a157600080fd5b506001600160a01b038135811691602001351661055a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610585565b8484610589565b50600192915050565b60025490565b600061037f848484610675565b6103f58461038b610585565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152600160205260408120906103c9610585565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107dc16565b610589565b5060019392505050565b60055460ff1690565b6000610363610415610585565b846103f08560016000610426610585565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087316565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e5610585565b846103f0856040518060600160405280602581526020016109b6602591396001600061050f610585565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107dc16565b6000610363610553610585565b8484610675565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ce5760405162461bcd60e51b81526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b0382166106135760405162461bcd60e51b81526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106ba5760405162461bcd60e51b815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b0382166106ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61070a8383836108d4565b61074d8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107dc16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610782908263ffffffff61087316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610830578181015183820152602001610818565b50505050905090810190601f16801561085d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200211864a65ba4fcada1107d4ae1ca69b48c7432ab34ae7fefc255e8844bc5c6e64736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.dbg.json b/integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.dbg.json new file mode 100644 index 00000000..dc4320b3 --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/11989eb858d8002448e21fdf110c8516.json" +} diff --git a/integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.json b/integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.json new file mode 100644 index 00000000..2d4c5bae --- /dev/null +++ b/integration_tests/ethereum/artifacts/contracts/Gravity.sol/Gravity.json @@ -0,0 +1,678 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Gravity", + "sourceName": "contracts/Gravity.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_gravityId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_powerThreshold", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "_validators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_powers", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "_cosmosDenom", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "_tokenContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_eventNonce", + "type": "uint256" + } + ], + "name": "ERC20DeployedEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "_invalidationId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_invalidationNonce", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_returnData", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_eventNonce", + "type": "uint256" + } + ], + "name": "LogicCallEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_tokenContract", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "_destination", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_eventNonce", + "type": "uint256" + } + ], + "name": "SendToCosmosEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_batchNonce", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_eventNonce", + "type": "uint256" + } + ], + "name": "TransactionBatchExecutedEvent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "_newValsetNonce", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_eventNonce", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "_validators", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "_powers", + "type": "uint256[]" + } + ], + "name": "ValsetUpdatedEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_cosmosDenom", + "type": "string" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + } + ], + "name": "deployERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_erc20Address", + "type": "address" + } + ], + "name": "lastBatchNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_invalidation_id", + "type": "bytes32" + } + ], + "name": "lastLogicCallNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_destination", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "sendToCosmos", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state_gravityId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "state_invalidationMapping", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "state_lastBatchNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state_lastEventNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state_lastValsetCheckpoint", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state_lastValsetNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state_powerThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_currentValidators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_currentPowers", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "_currentValsetNonce", + "type": "uint256" + }, + { + "internalType": "uint8[]", + "name": "_v", + "type": "uint8[]" + }, + { + "internalType": "bytes32[]", + "name": "_r", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_s", + "type": "bytes32[]" + }, + { + "internalType": "uint256[]", + "name": "_amounts", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "_destinations", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_fees", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "_batchNonce", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenContract", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_batchTimeout", + "type": "uint256" + } + ], + "name": "submitBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_currentValidators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_currentPowers", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "_currentValsetNonce", + "type": "uint256" + }, + { + "internalType": "uint8[]", + "name": "_v", + "type": "uint8[]" + }, + { + "internalType": "bytes32[]", + "name": "_r", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_s", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "uint256[]", + "name": "transferAmounts", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "transferTokenContracts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "feeAmounts", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "feeTokenContracts", + "type": "address[]" + }, + { + "internalType": "address", + "name": "logicContractAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "timeOut", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "invalidationId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "invalidationNonce", + "type": "uint256" + } + ], + "internalType": "struct LogicCallArgs", + "name": "_args", + "type": "tuple" + } + ], + "name": "submitLogicCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_currentValidators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_currentPowers", + "type": "uint256[]" + }, + { + "internalType": "uint8[]", + "name": "_v", + "type": "uint8[]" + }, + { + "internalType": "bytes32[]", + "name": "_r", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_s", + "type": "bytes32[]" + }, + { + "internalType": "bytes32", + "name": "_theHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_powerThreshold", + "type": "uint256" + } + ], + "name": "testCheckValidatorSignatures", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_validators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_powers", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "_valsetNonce", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_gravityId", + "type": "bytes32" + } + ], + "name": "testMakeCheckpoint", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_newValidators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_newPowers", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "_newValsetNonce", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "_currentValidators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_currentPowers", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "_currentValsetNonce", + "type": "uint256" + }, + { + "internalType": "uint8[]", + "name": "_v", + "type": "uint8[]" + }, + { + "internalType": "bytes32[]", + "name": "_r", + "type": "bytes32[]" + }, + { + "internalType": "bytes32[]", + "name": "_s", + "type": "bytes32[]" + } + ], + "name": "updateValset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600060045560016005553480156200001b57600080fd5b5060405162003722380380620037228339810160408190526200003e9162000233565b60016000558051825114620000705760405162461bcd60e51b8152600401620000679062000431565b60405180910390fd5b6000805b8251811015620000af578281815181106200008b57fe5b60200260200101518201915084821115620000a657620000af565b60010162000074565b50838111620000d25760405162461bcd60e51b81526004016200006790620003d4565b6000620000eb848483896001600160e01b036200014d16565b60068790556007869055600181905560045460055460405192935090917fb119f1f36224601586b5037da909ecf37e83864dddea5d32ad4e32ac1d97e62b9162000139918890889062000468565b60405180910390a2505050505050620004e8565b6040516000906918da1958dadc1bda5b9d60b21b9082906200017c908590849088908b908b906020016200038d565b60408051808303601f190181529190528051602090910120979650505050505050565b80516001600160a01b0381168114620001b757600080fd5b92915050565b600082601f830112620001ce578081fd5b8151620001e5620001df82620004c8565b620004a1565b8181529150602080830190848101818402860182018710156200020757600080fd5b60005b8481101562000228578151845292820192908201906001016200020a565b505050505092915050565b6000806000806080858703121562000249578384fd5b845160208087015160408801519296509450906001600160401b038082111562000271578485fd5b81880189601f82011262000283578586fd5b8051925062000296620001df84620004c8565b83815284810190828601868602840187018d1015620002b3578889fd5b8893505b85841015620002e157620002cc8d826200019f565b835260019390930192918601918601620002b7565b5060608b01519097509450505080831115620002fb578384fd5b50506200030b87828801620001bd565b91505092959194509250565b6000815180845260208085019450808401835b83811015620003515781516001600160a01b0316875295820195908201906001016200032a565b509495945050505050565b6000815180845260208085019450808401835b8381101562000351578151875295820195908201906001016200036f565b600086825285602083015284604083015260a06060830152620003b460a083018562000317565b8281036080840152620003c881856200035c565b98975050505050505050565b6020808252603c908201527f5375626d69747465642076616c696461746f7220736574207369676e6174757260408201527f657320646f206e6f74206861766520656e6f75676820706f7765722e00000000606082015260800190565b6020808252601f908201527f4d616c666f726d65642063757272656e742076616c696461746f722073657400604082015260600190565b60008482526060602083015262000483606083018562000317565b82810360408401526200049781856200035c565b9695505050505050565b6040518181016001600160401b0381118282101715620004c057600080fd5b604052919050565b60006001600160401b03821115620004de578081fd5b5060209081020190565b61322a80620004f86000396000f3fe60806040523480156200001157600080fd5b5060043610620001185760003560e01c8063c227c30b11620000a5578063e3cb9f62116200006f578063e3cb9f621462000224578063e5a2b5d2146200023b578063f2b533071462000245578063f7955637146200024f5762000118565b8063c227c30b14620001c8578063c9d194d514620001df578063db7c4e5714620001f6578063df97174b146200020d5762000118565b80637dfb6f8611620000e75780637dfb6f86146200018657806383b435db146200019d578063b56561fe14620001b4578063bdda81d414620001be5762000118565b8063011b2174146200011d5780630c246c82146200014c5780631ffbe7f9146200016557806373b20547146200017c575b600080fd5b620001346200012e366004620013da565b62000266565b60405162000143919062001bf8565b60405180910390f35b620001636200015d3660046200181b565b62000281565b005b6200016362000176366004620013f8565b620005ce565b6200013462000684565b6200013462000197366004620019bf565b6200068a565b62000163620001ae36600462001663565b6200069c565b6200013462000968565b620001346200096e565b62000163620001d936600462001926565b62000974565b62000134620001f0366004620019bf565b62000989565b620001636200020736600462001439565b6200099b565b620001346200021e366004620013da565b620009b5565b620001636200023536600462001527565b620009c7565b6200013462000b53565b6200013462000b59565b6200016362000260366004620019d8565b62000b5f565b6001600160a01b031660009081526002602052604090205490565b60026000541415620002b05760405162461bcd60e51b8152600401620002a79062002284565b60405180910390fd5b600260005560c08101514310620002db5760405162461bcd60e51b8152600401620002a79062001fd7565b61010081015160e082015160009081526003602052604090205410620003155760405162461bcd60e51b8152600401620002a79062001f43565b8551875114801562000328575083518751145b801562000336575082518751145b801562000344575081518751145b620003635760405162461bcd60e51b8152600401620002a7906200224d565b6001546200037688888860065462000c11565b14620003965760405162461bcd60e51b8152600401620002a79062001e59565b60208101515181515114620003bf5760405162461bcd60e51b8152600401620002a7906200209a565b80606001515181604001515114620003eb5760405162461bcd60e51b8152600401620002a79062001e29565b6000600654681b1bd9da58d0d85b1b60ba1b836000015184602001518560400151866060015187608001518860a001518960c001518a60e001518b6101000151604051602001620004479b9a9998979695949392919062001c48565b6040516020818303038152906040528051906020012090506200047288888787878660075462000c65565b61010082015160e08301516000908152600360205260408120919091555b825151811015620004f857620004ef836080015184600001518381518110620004b557fe5b602002602001015185602001518481518110620004ce57fe5b60200260200101516001600160a01b031662000d6f9092919063ffffffff16565b60010162000490565b5060606200050f83608001518460a0015162000dce565b905060005b8360400151518110156200055a576200055133856040015183815181106200053857fe5b602002602001015186606001518481518110620004ce57fe5b60010162000514565b506005546200057190600163ffffffff62000e1b16565b600581905560e08401516101008501516040517f7c2bb24f8e1b3725cb613d7f11ef97d9745cc97a0e40f730621c052d684077a193620005b693929186919062001d6e565b60405180910390a15050600160005550505050505050565b60026000541415620005f45760405162461bcd60e51b8152600401620002a79062002284565b6002600055620006166001600160a01b03841633308463ffffffff62000e4316565b6005546200062c90600163ffffffff62000e1b16565b6005819055604051839133916001600160a01b038716917fd7767894d73c589daeca9643f445f03d7be61aad2950c117e7cbff4176fca7e49162000672918791620022f4565b60405180910390a45050600160005550565b60055481565b60036020526000908152604090205481565b60026000541415620006c25760405162461bcd60e51b8152600401620002a79062002284565b600260008181556001600160a01b038416815260209190915260409020548311620007015760405162461bcd60e51b8152600401620002a79062001eb6565b804310620007235760405162461bcd60e51b8152600401620002a7906200203d565b8a518c5114801562000736575088518c51145b801562000744575087518c51145b801562000752575086518c51145b620007715760405162461bcd60e51b8152600401620002a7906200224d565b600154620007848d8d8d60065462000c11565b14620007a45760405162461bcd60e51b8152600401620002a79062001e59565b84518651148015620007b7575083518651145b620007d65760405162461bcd60e51b8152600401620002a79062001f0c565b620008348c8c8b8b8b6006546f0e8e4c2dce6c2c6e8d2dedc84c2e8c6d60831b8d8d8d8d8d8d6040516020016200081598979695949392919062001cf7565b6040516020818303038152906040528051906020012060075462000c65565b6001600160a01b0382166000908152600260205260408120849055805b8751811015620008d757620008a38782815181106200086c57fe5b60200260200101518983815181106200088157fe5b6020026020010151866001600160a01b031662000d6f9092919063ffffffff16565b620008cc868281518110620008b457fe5b60200260200101518362000e1b90919063ffffffff16565b915060010162000851565b50620008f46001600160a01b038416338363ffffffff62000d6f16565b506005546200090b90600163ffffffff62000e1b16565b60058190556040516001600160a01b0384169185917f02c7e81975f8edb86e2a0c038b7b86a49c744236abf0f6177ff5afc6986ab708916200094d9162001bf8565b60405180910390a35050600160005550505050505050505050565b60045481565b60065481565b620009828484848462000c11565b5050505050565b60009081526003602052604090205490565b620009ac8787878787878762000c65565b50505050505050565b60026020526000908152604090205481565b60026000541415620009ed5760405162461bcd60e51b8152600401620002a79062002284565b600260005583871162000a145760405162461bcd60e51b8152600401620002a7906200216f565b875189511462000a385760405162461bcd60e51b8152600401620002a790620020db565b8451865114801562000a4b575082518651145b801562000a59575081518651145b801562000a67575080518651145b62000a865760405162461bcd60e51b8152600401620002a7906200224d565b60015462000a9987878760065462000c11565b1462000ab95760405162461bcd60e51b8152600401620002a79062001e59565b600062000acb8a8a8a60065462000c11565b905062000ae087878686868660075462000c65565b6001818155600489905560055462000afe9163ffffffff62000e1b16565b600581905560405189917fb119f1f36224601586b5037da909ecf37e83864dddea5d32ad4e32ac1d97e62b9162000b3a91908e908e90620022bb565b60405180910390a2505060016000555050505050505050565b60075481565b60015481565b60003084848460405162000b7390620010bb565b62000b82949392919062001b90565b604051809103906000f08015801562000b9f573d6000803e3d6000fd5b5060055490915062000bb990600163ffffffff62000e1b16565b60058190556040516001600160a01b038316917f82fe3a4fa49c6382d0c085746698ddbbafe6c2bf61285b19410644b5b26287c79162000c029189918991899189919062001dd3565b60405180910390a25050505050565b6040516000906918da1958dadc1bda5b9d60b21b90829062000c40908590849088908b908b9060200162001c01565b60408051601f198184030181529190528051602090910120925050505b949350505050565b6000805b885181101562000d425786818151811062000c8057fe5b602002602001015160ff1660001462000d395762000cf289828151811062000ca457fe5b60200260200101518589848151811062000cba57fe5b602002602001015189858151811062000ccf57fe5b602002602001015189868151811062000ce457fe5b602002602001015162000e6d565b62000d115760405162461bcd60e51b8152600401620002a79062001ffa565b87818151811062000d1e57fe5b6020026020010151820191508282111562000d395762000d42565b60010162000c69565b5081811162000d655760405162461bcd60e51b8152600401620002a79062002112565b5050505050505050565b62000dc98363a9059cbb60e01b848460405160240162000d9192919062001bdf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262000f0d565b505050565b606062000e1283836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525062000fa4565b90505b92915050565b60008282018381101562000e125760405162461bcd60e51b8152600401620002a79062001fa0565b62000e67846323b872dd60e01b85858560405160240162000d919392919062001b6c565b50505050565b6000808560405160200162000e83919062001b3b565b6040516020818303038152906040528051906020012090506001818686866040516000815260200160405260405162000ec0949392919062001da0565b6020604051602081039080840390855afa15801562000ee3573d6000803e3d6000fd5b505050602060405103516001600160a01b0316876001600160a01b03161491505095945050505050565b606062000f64826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662000fa49092919063ffffffff16565b80519091501562000dc9578080602001905181019062000f8591906200199d565b62000dc95760405162461bcd60e51b8152600401620002a79062002203565b606062000c5d8484600085606062000fbc8562001081565b62000fdb5760405162461bcd60e51b8152600401620002a790620021cc565b60006060866001600160a01b0316858760405162000ffa919062001b1d565b60006040518083038185875af1925050503d806000811462001039576040519150601f19603f3d011682016040523d82523d6000602084013e6200103e565b606091505b509150915081156200105457915062000c5d9050565b805115620010655780518082602001fd5b8360405162461bcd60e51b8152600401620002a7919062001dbe565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159062000c5d575050151592915050565b610e7c806200237983390190565b80356001600160a01b038116811462000e1557600080fd5b600082601f830112620010f2578081fd5b813562001109620011038262002329565b62002302565b8181529150602080830190848101818402860182018710156200112b57600080fd5b60005b848110156200115657620011438883620010c9565b845292820192908201906001016200112e565b505050505092915050565b600082601f83011262001172578081fd5b813562001183620011038262002329565b818152915060208083019084810181840286018201871015620011a557600080fd5b60005b848110156200115657813584529282019290820190600101620011a8565b600082601f830112620011d7578081fd5b8135620011e8620011038262002329565b8181529150602080830190848101818402860182018710156200120a57600080fd5b60005b848110156200115657620012228883620013c8565b845292820192908201906001016200120d565b600082601f83011262001246578081fd5b81356001600160401b038111156200125c578182fd5b62001271601f8201601f191660200162002302565b91508082528360208285010111156200128957600080fd5b8060208401602084013760009082016020015292915050565b6000610120808385031215620012b6578182fd5b620012c18162002302565b91505081356001600160401b0380821115620012dc57600080fd5b620012ea8583860162001161565b835260208401359150808211156200130157600080fd5b6200130f85838601620010e1565b602084015260408401359150808211156200132957600080fd5b620013378583860162001161565b604084015260608401359150808211156200135157600080fd5b6200135f85838601620010e1565b6060840152620013738560808601620010c9565b608084015260a08401359150808211156200138d57600080fd5b506200139c8482850162001235565b60a08301525060c082013560c082015260e082013560e082015261010080830135818301525092915050565b803560ff8116811462000e1557600080fd5b600060208284031215620013ec578081fd5b62000e128383620010c9565b6000806000606084860312156200140d578182fd5b83356001600160a01b038116811462001424578283fd5b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121562001454578283fd5b87356001600160401b03808211156200146b578485fd5b620014798b838c01620010e1565b985060208a01359150808211156200148f578485fd5b6200149d8b838c0162001161565b975060408a0135915080821115620014b3578485fd5b620014c18b838c01620011c6565b965060608a0135915080821115620014d7578485fd5b620014e58b838c0162001161565b955060808a0135915080821115620014fb578485fd5b506200150a8a828b0162001161565b93505060a0880135915060c0880135905092959891949750929550565b60008060008060008060008060006101208a8c03121562001546578182fd5b89356001600160401b03808211156200155d578384fd5b6200156b8d838e01620010e1565b9a5060208c013591508082111562001581578384fd5b6200158f8d838e0162001161565b995060408c0135985060608c0135915080821115620015ac578384fd5b620015ba8d838e01620010e1565b975060808c0135915080821115620015d0578384fd5b620015de8d838e0162001161565b965060a08c0135955060c08c0135915080821115620015fb578384fd5b620016098d838e01620011c6565b945060e08c01359150808211156200161f578384fd5b6200162d8d838e0162001161565b93506101008c013591508082111562001644578283fd5b50620016538c828d0162001161565b9150509295985092959850929598565b6000806000806000806000806000806000806101808d8f03121562001686578586fd5b6001600160401b038d3511156200169b578586fd5b620016aa8e8e358f01620010e1565b9b506001600160401b0360208e01351115620016c4578586fd5b620016d68e60208f01358f0162001161565b9a5060408d013599506001600160401b0360608e01351115620016f7578586fd5b620017098e60608f01358f01620011c6565b98506001600160401b0360808e0135111562001723578586fd5b620017358e60808f01358f0162001161565b97506001600160401b0360a08e013511156200174f578586fd5b620017618e60a08f01358f0162001161565b96506001600160401b0360c08e013511156200177b578586fd5b6200178d8e60c08f01358f0162001161565b95506001600160401b0360e08e01351115620017a7578283fd5b620017b98e60e08f01358f01620010e1565b94506001600160401b036101008e01351115620017d4578283fd5b620017e78e6101008f01358f0162001161565b93506101208d01359250620018018e6101408f01620010c9565b91506101608d013590509295989b509295989b509295989b565b600080600080600080600060e0888a03121562001836578081fd5b87356001600160401b03808211156200184d578283fd5b6200185b8b838c01620010e1565b985060208a013591508082111562001871578283fd5b6200187f8b838c0162001161565b975060408a0135965060608a01359150808211156200189c578283fd5b620018aa8b838c01620011c6565b955060808a0135915080821115620018c0578283fd5b620018ce8b838c0162001161565b945060a08a0135915080821115620018e4578283fd5b620018f28b838c0162001161565b935060c08a013591508082111562001908578283fd5b50620019178a828b01620012a2565b91505092959891949750929550565b600080600080608085870312156200193c578182fd5b84356001600160401b038082111562001953578384fd5b6200196188838901620010e1565b9550602087013591508082111562001977578384fd5b50620019868782880162001161565b949794965050505060408301359260600135919050565b600060208284031215620019af578081fd5b8151801515811462000e12578182fd5b600060208284031215620019d1578081fd5b5035919050565b60008060008060808587031215620019ee578182fd5b84356001600160401b038082111562001a05578384fd5b62001a138883890162001235565b9550602087013591508082111562001a29578384fd5b62001a378883890162001235565b9450604087013591508082111562001a4d578384fd5b5062001a5c8782880162001235565b92505062001a6e8660608701620013c8565b905092959194509250565b6000815180845260208085019450808401835b8381101562001ab35781516001600160a01b03168752958201959082019060010162001a8c565b509495945050505050565b6000815180845260208085019450808401835b8381101562001ab35781518752958201959082019060010162001ad1565b6000815180845262001b0981602086016020860162002349565b601f01601f19169290920160200192915050565b6000825162001b3181846020870162002349565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038516815260806020820181905260009062001bb69083018662001aef565b828103604084015262001bca818662001aef565b91505060ff8316606083015295945050505050565b6001600160a01b03929092168252602082015260400190565b90815260200190565b600086825285602083015284604083015260a0606083015262001c2860a083018562001a79565b828103608084015262001c3c818562001abe565b98975050505050505050565b60006101608d83528c602084015280604084015262001c6a8184018d62001abe565b838103606085015262001c7e818d62001a79565b915050828103608084015262001c95818b62001abe565b83810360a085015262001ca9818b62001a79565b6001600160a01b038a1660c086015284810360e0860152915062001cd09050818862001aef565b61010084019690965250506101208101929092526101409091015298975050505050505050565b60006101008a835289602084015280604084015262001d198184018a62001abe565b838103606085015262001d2d818a62001a79565b915050828103608084015262001d44818862001abe565b60a084019690965250506001600160a01b039290921660c083015260e09091015295945050505050565b60008582528460208301526080604083015262001d8f608083018562001aef565b905082606083015295945050505050565b93845260ff9290921660208401526040830152606082015260800190565b60006020825262000e12602083018462001aef565b600060a0825262001de860a083018862001aef565b828103602084015262001dfc818862001aef565b838103604085015262001e10818862001aef565b60ff969096166060850152505050608001529392505050565b6020808252601690820152754d616c666f726d6564206c697374206f66206665657360501b604082015260600190565b6020808252603f908201527f537570706c6965642063757272656e742076616c696461746f727320616e642060408201527f706f7765727320646f206e6f74206d6174636820636865636b706f696e742e00606082015260800190565b60208082526036908201527f4e6577206261746368206e6f6e6365206d7573742062652067726561746572206040820152757468616e207468652063757272656e74206e6f6e636560501b606082015260800190565b6020808252601f908201527f4d616c666f726d6564206261746368206f66207472616e73616374696f6e7300604082015260600190565b6020808252603d908201527f4e657720696e76616c69646174696f6e206e6f6e6365206d757374206265206760408201527f726561746572207468616e207468652063757272656e74206e6f6e6365000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260099082015268151a5b5959081bdd5d60ba1b604082015260600190565b60208082526023908201527f56616c696461746f72207369676e617475726520646f6573206e6f74206d617460408201526231b41760e91b606082015260800190565b6020808252603b908201527f42617463682074696d656f7574206d757374206265206772656174657220746860408201527f616e207468652063757272656e7420626c6f636b206865696768740000000000606082015260800190565b60208082526021908201527f4d616c666f726d6564206c697374206f6620746f6b656e207472616e736665726040820152607360f81b606082015260800190565b6020808252601b908201527f4d616c666f726d6564206e65772076616c696461746f72207365740000000000604082015260600190565b6020808252603c908201527f5375626d69747465642076616c696461746f7220736574207369676e6174757260408201527f657320646f206e6f74206861766520656e6f75676820706f7765722e00000000606082015260800190565b60208082526037908201527f4e65772076616c736574206e6f6e6365206d757374206265206772656174657260408201527f207468616e207468652063757272656e74206e6f6e6365000000000000000000606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f4d616c666f726d65642063757272656e742076616c696461746f722073657400604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600084825260606020830152620022d6606083018562001a79565b8281036040840152620022ea818562001abe565b9695505050505050565b918252602082015260400190565b6040518181016001600160401b03811182821017156200232157600080fd5b604052919050565b60006001600160401b038211156200233f578081fd5b5060209081020190565b60005b83811015620023665781810151838201526020016200234c565b8381111562000e67575050600091015256fe60806040526000196006553480156200001757600080fd5b5060405162000e7c38038062000e7c833981810160405260808110156200003d57600080fd5b8151602083018051604051929492938301929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001ca91600391850190620003b7565b508051620001e0906004906020840190620003b7565b50506005805460ff191660121790555062000204816001600160e01b036200022216565b62000218846006546200023860201b60201c565b505050506200045c565b6005805460ff191660ff92909216919091179055565b6001600160a01b03821662000294576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002ab600083836001600160e01b036200035016565b620002c7816002546200035560201b620008731790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002fa9183906200087362000355821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b600082820183811015620003b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003fa57805160ff19168380011785556200042a565b828001600101855582156200042a579182015b828111156200042a5782518255916020019190600101906200040d565b50620004389291506200043c565b5090565b6200045991905b8082111562000438576000815560010162000443565b90565b610a10806200046c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610408565b6101736004803603602081101561021b57600080fd5b50356001600160a01b031661045c565b6100b6610477565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d8565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610546565b610173600480360360408110156102a157600080fd5b506001600160a01b038135811691602001351661055a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610585565b8484610589565b50600192915050565b60025490565b600061037f848484610675565b6103f58461038b610585565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152600160205260408120906103c9610585565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107dc16565b610589565b5060019392505050565b60055460ff1690565b6000610363610415610585565b846103f08560016000610426610585565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087316565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e5610585565b846103f0856040518060600160405280602581526020016109b6602591396001600061050f610585565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107dc16565b6000610363610553610585565b8484610675565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ce5760405162461bcd60e51b81526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b0382166106135760405162461bcd60e51b81526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106ba5760405162461bcd60e51b815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b0382166106ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61070a8383836108d4565b61074d8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107dc16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610782908263ffffffff61087316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610830578181015183820152602001610818565b50505050905090810190601f16801561085d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200211864a65ba4fcada1107d4ae1ca69b48c7432ab34ae7fefc255e8844bc5c6e64736f6c63430006060033a2646970667358221220229d4a9b3cba6af85dada19ebddeecb417bc626982ae584d0b6b08a201173d3a64736f6c63430006060033", + "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001185760003560e01c8063c227c30b11620000a5578063e3cb9f62116200006f578063e3cb9f621462000224578063e5a2b5d2146200023b578063f2b533071462000245578063f7955637146200024f5762000118565b8063c227c30b14620001c8578063c9d194d514620001df578063db7c4e5714620001f6578063df97174b146200020d5762000118565b80637dfb6f8611620000e75780637dfb6f86146200018657806383b435db146200019d578063b56561fe14620001b4578063bdda81d414620001be5762000118565b8063011b2174146200011d5780630c246c82146200014c5780631ffbe7f9146200016557806373b20547146200017c575b600080fd5b620001346200012e366004620013da565b62000266565b60405162000143919062001bf8565b60405180910390f35b620001636200015d3660046200181b565b62000281565b005b6200016362000176366004620013f8565b620005ce565b6200013462000684565b6200013462000197366004620019bf565b6200068a565b62000163620001ae36600462001663565b6200069c565b6200013462000968565b620001346200096e565b62000163620001d936600462001926565b62000974565b62000134620001f0366004620019bf565b62000989565b620001636200020736600462001439565b6200099b565b620001346200021e366004620013da565b620009b5565b620001636200023536600462001527565b620009c7565b6200013462000b53565b6200013462000b59565b6200016362000260366004620019d8565b62000b5f565b6001600160a01b031660009081526002602052604090205490565b60026000541415620002b05760405162461bcd60e51b8152600401620002a79062002284565b60405180910390fd5b600260005560c08101514310620002db5760405162461bcd60e51b8152600401620002a79062001fd7565b61010081015160e082015160009081526003602052604090205410620003155760405162461bcd60e51b8152600401620002a79062001f43565b8551875114801562000328575083518751145b801562000336575082518751145b801562000344575081518751145b620003635760405162461bcd60e51b8152600401620002a7906200224d565b6001546200037688888860065462000c11565b14620003965760405162461bcd60e51b8152600401620002a79062001e59565b60208101515181515114620003bf5760405162461bcd60e51b8152600401620002a7906200209a565b80606001515181604001515114620003eb5760405162461bcd60e51b8152600401620002a79062001e29565b6000600654681b1bd9da58d0d85b1b60ba1b836000015184602001518560400151866060015187608001518860a001518960c001518a60e001518b6101000151604051602001620004479b9a9998979695949392919062001c48565b6040516020818303038152906040528051906020012090506200047288888787878660075462000c65565b61010082015160e08301516000908152600360205260408120919091555b825151811015620004f857620004ef836080015184600001518381518110620004b557fe5b602002602001015185602001518481518110620004ce57fe5b60200260200101516001600160a01b031662000d6f9092919063ffffffff16565b60010162000490565b5060606200050f83608001518460a0015162000dce565b905060005b8360400151518110156200055a576200055133856040015183815181106200053857fe5b602002602001015186606001518481518110620004ce57fe5b60010162000514565b506005546200057190600163ffffffff62000e1b16565b600581905560e08401516101008501516040517f7c2bb24f8e1b3725cb613d7f11ef97d9745cc97a0e40f730621c052d684077a193620005b693929186919062001d6e565b60405180910390a15050600160005550505050505050565b60026000541415620005f45760405162461bcd60e51b8152600401620002a79062002284565b6002600055620006166001600160a01b03841633308463ffffffff62000e4316565b6005546200062c90600163ffffffff62000e1b16565b6005819055604051839133916001600160a01b038716917fd7767894d73c589daeca9643f445f03d7be61aad2950c117e7cbff4176fca7e49162000672918791620022f4565b60405180910390a45050600160005550565b60055481565b60036020526000908152604090205481565b60026000541415620006c25760405162461bcd60e51b8152600401620002a79062002284565b600260008181556001600160a01b038416815260209190915260409020548311620007015760405162461bcd60e51b8152600401620002a79062001eb6565b804310620007235760405162461bcd60e51b8152600401620002a7906200203d565b8a518c5114801562000736575088518c51145b801562000744575087518c51145b801562000752575086518c51145b620007715760405162461bcd60e51b8152600401620002a7906200224d565b600154620007848d8d8d60065462000c11565b14620007a45760405162461bcd60e51b8152600401620002a79062001e59565b84518651148015620007b7575083518651145b620007d65760405162461bcd60e51b8152600401620002a79062001f0c565b620008348c8c8b8b8b6006546f0e8e4c2dce6c2c6e8d2dedc84c2e8c6d60831b8d8d8d8d8d8d6040516020016200081598979695949392919062001cf7565b6040516020818303038152906040528051906020012060075462000c65565b6001600160a01b0382166000908152600260205260408120849055805b8751811015620008d757620008a38782815181106200086c57fe5b60200260200101518983815181106200088157fe5b6020026020010151866001600160a01b031662000d6f9092919063ffffffff16565b620008cc868281518110620008b457fe5b60200260200101518362000e1b90919063ffffffff16565b915060010162000851565b50620008f46001600160a01b038416338363ffffffff62000d6f16565b506005546200090b90600163ffffffff62000e1b16565b60058190556040516001600160a01b0384169185917f02c7e81975f8edb86e2a0c038b7b86a49c744236abf0f6177ff5afc6986ab708916200094d9162001bf8565b60405180910390a35050600160005550505050505050505050565b60045481565b60065481565b620009828484848462000c11565b5050505050565b60009081526003602052604090205490565b620009ac8787878787878762000c65565b50505050505050565b60026020526000908152604090205481565b60026000541415620009ed5760405162461bcd60e51b8152600401620002a79062002284565b600260005583871162000a145760405162461bcd60e51b8152600401620002a7906200216f565b875189511462000a385760405162461bcd60e51b8152600401620002a790620020db565b8451865114801562000a4b575082518651145b801562000a59575081518651145b801562000a67575080518651145b62000a865760405162461bcd60e51b8152600401620002a7906200224d565b60015462000a9987878760065462000c11565b1462000ab95760405162461bcd60e51b8152600401620002a79062001e59565b600062000acb8a8a8a60065462000c11565b905062000ae087878686868660075462000c65565b6001818155600489905560055462000afe9163ffffffff62000e1b16565b600581905560405189917fb119f1f36224601586b5037da909ecf37e83864dddea5d32ad4e32ac1d97e62b9162000b3a91908e908e90620022bb565b60405180910390a2505060016000555050505050505050565b60075481565b60015481565b60003084848460405162000b7390620010bb565b62000b82949392919062001b90565b604051809103906000f08015801562000b9f573d6000803e3d6000fd5b5060055490915062000bb990600163ffffffff62000e1b16565b60058190556040516001600160a01b038316917f82fe3a4fa49c6382d0c085746698ddbbafe6c2bf61285b19410644b5b26287c79162000c029189918991899189919062001dd3565b60405180910390a25050505050565b6040516000906918da1958dadc1bda5b9d60b21b90829062000c40908590849088908b908b9060200162001c01565b60408051601f198184030181529190528051602090910120925050505b949350505050565b6000805b885181101562000d425786818151811062000c8057fe5b602002602001015160ff1660001462000d395762000cf289828151811062000ca457fe5b60200260200101518589848151811062000cba57fe5b602002602001015189858151811062000ccf57fe5b602002602001015189868151811062000ce457fe5b602002602001015162000e6d565b62000d115760405162461bcd60e51b8152600401620002a79062001ffa565b87818151811062000d1e57fe5b6020026020010151820191508282111562000d395762000d42565b60010162000c69565b5081811162000d655760405162461bcd60e51b8152600401620002a79062002112565b5050505050505050565b62000dc98363a9059cbb60e01b848460405160240162000d9192919062001bdf565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262000f0d565b505050565b606062000e1283836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525062000fa4565b90505b92915050565b60008282018381101562000e125760405162461bcd60e51b8152600401620002a79062001fa0565b62000e67846323b872dd60e01b85858560405160240162000d919392919062001b6c565b50505050565b6000808560405160200162000e83919062001b3b565b6040516020818303038152906040528051906020012090506001818686866040516000815260200160405260405162000ec0949392919062001da0565b6020604051602081039080840390855afa15801562000ee3573d6000803e3d6000fd5b505050602060405103516001600160a01b0316876001600160a01b03161491505095945050505050565b606062000f64826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662000fa49092919063ffffffff16565b80519091501562000dc9578080602001905181019062000f8591906200199d565b62000dc95760405162461bcd60e51b8152600401620002a79062002203565b606062000c5d8484600085606062000fbc8562001081565b62000fdb5760405162461bcd60e51b8152600401620002a790620021cc565b60006060866001600160a01b0316858760405162000ffa919062001b1d565b60006040518083038185875af1925050503d806000811462001039576040519150601f19603f3d011682016040523d82523d6000602084013e6200103e565b606091505b509150915081156200105457915062000c5d9050565b805115620010655780518082602001fd5b8360405162461bcd60e51b8152600401620002a7919062001dbe565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159062000c5d575050151592915050565b610e7c806200237983390190565b80356001600160a01b038116811462000e1557600080fd5b600082601f830112620010f2578081fd5b813562001109620011038262002329565b62002302565b8181529150602080830190848101818402860182018710156200112b57600080fd5b60005b848110156200115657620011438883620010c9565b845292820192908201906001016200112e565b505050505092915050565b600082601f83011262001172578081fd5b813562001183620011038262002329565b818152915060208083019084810181840286018201871015620011a557600080fd5b60005b848110156200115657813584529282019290820190600101620011a8565b600082601f830112620011d7578081fd5b8135620011e8620011038262002329565b8181529150602080830190848101818402860182018710156200120a57600080fd5b60005b848110156200115657620012228883620013c8565b845292820192908201906001016200120d565b600082601f83011262001246578081fd5b81356001600160401b038111156200125c578182fd5b62001271601f8201601f191660200162002302565b91508082528360208285010111156200128957600080fd5b8060208401602084013760009082016020015292915050565b6000610120808385031215620012b6578182fd5b620012c18162002302565b91505081356001600160401b0380821115620012dc57600080fd5b620012ea8583860162001161565b835260208401359150808211156200130157600080fd5b6200130f85838601620010e1565b602084015260408401359150808211156200132957600080fd5b620013378583860162001161565b604084015260608401359150808211156200135157600080fd5b6200135f85838601620010e1565b6060840152620013738560808601620010c9565b608084015260a08401359150808211156200138d57600080fd5b506200139c8482850162001235565b60a08301525060c082013560c082015260e082013560e082015261010080830135818301525092915050565b803560ff8116811462000e1557600080fd5b600060208284031215620013ec578081fd5b62000e128383620010c9565b6000806000606084860312156200140d578182fd5b83356001600160a01b038116811462001424578283fd5b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121562001454578283fd5b87356001600160401b03808211156200146b578485fd5b620014798b838c01620010e1565b985060208a01359150808211156200148f578485fd5b6200149d8b838c0162001161565b975060408a0135915080821115620014b3578485fd5b620014c18b838c01620011c6565b965060608a0135915080821115620014d7578485fd5b620014e58b838c0162001161565b955060808a0135915080821115620014fb578485fd5b506200150a8a828b0162001161565b93505060a0880135915060c0880135905092959891949750929550565b60008060008060008060008060006101208a8c03121562001546578182fd5b89356001600160401b03808211156200155d578384fd5b6200156b8d838e01620010e1565b9a5060208c013591508082111562001581578384fd5b6200158f8d838e0162001161565b995060408c0135985060608c0135915080821115620015ac578384fd5b620015ba8d838e01620010e1565b975060808c0135915080821115620015d0578384fd5b620015de8d838e0162001161565b965060a08c0135955060c08c0135915080821115620015fb578384fd5b620016098d838e01620011c6565b945060e08c01359150808211156200161f578384fd5b6200162d8d838e0162001161565b93506101008c013591508082111562001644578283fd5b50620016538c828d0162001161565b9150509295985092959850929598565b6000806000806000806000806000806000806101808d8f03121562001686578586fd5b6001600160401b038d3511156200169b578586fd5b620016aa8e8e358f01620010e1565b9b506001600160401b0360208e01351115620016c4578586fd5b620016d68e60208f01358f0162001161565b9a5060408d013599506001600160401b0360608e01351115620016f7578586fd5b620017098e60608f01358f01620011c6565b98506001600160401b0360808e0135111562001723578586fd5b620017358e60808f01358f0162001161565b97506001600160401b0360a08e013511156200174f578586fd5b620017618e60a08f01358f0162001161565b96506001600160401b0360c08e013511156200177b578586fd5b6200178d8e60c08f01358f0162001161565b95506001600160401b0360e08e01351115620017a7578283fd5b620017b98e60e08f01358f01620010e1565b94506001600160401b036101008e01351115620017d4578283fd5b620017e78e6101008f01358f0162001161565b93506101208d01359250620018018e6101408f01620010c9565b91506101608d013590509295989b509295989b509295989b565b600080600080600080600060e0888a03121562001836578081fd5b87356001600160401b03808211156200184d578283fd5b6200185b8b838c01620010e1565b985060208a013591508082111562001871578283fd5b6200187f8b838c0162001161565b975060408a0135965060608a01359150808211156200189c578283fd5b620018aa8b838c01620011c6565b955060808a0135915080821115620018c0578283fd5b620018ce8b838c0162001161565b945060a08a0135915080821115620018e4578283fd5b620018f28b838c0162001161565b935060c08a013591508082111562001908578283fd5b50620019178a828b01620012a2565b91505092959891949750929550565b600080600080608085870312156200193c578182fd5b84356001600160401b038082111562001953578384fd5b6200196188838901620010e1565b9550602087013591508082111562001977578384fd5b50620019868782880162001161565b949794965050505060408301359260600135919050565b600060208284031215620019af578081fd5b8151801515811462000e12578182fd5b600060208284031215620019d1578081fd5b5035919050565b60008060008060808587031215620019ee578182fd5b84356001600160401b038082111562001a05578384fd5b62001a138883890162001235565b9550602087013591508082111562001a29578384fd5b62001a378883890162001235565b9450604087013591508082111562001a4d578384fd5b5062001a5c8782880162001235565b92505062001a6e8660608701620013c8565b905092959194509250565b6000815180845260208085019450808401835b8381101562001ab35781516001600160a01b03168752958201959082019060010162001a8c565b509495945050505050565b6000815180845260208085019450808401835b8381101562001ab35781518752958201959082019060010162001ad1565b6000815180845262001b0981602086016020860162002349565b601f01601f19169290920160200192915050565b6000825162001b3181846020870162002349565b9190910192915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038516815260806020820181905260009062001bb69083018662001aef565b828103604084015262001bca818662001aef565b91505060ff8316606083015295945050505050565b6001600160a01b03929092168252602082015260400190565b90815260200190565b600086825285602083015284604083015260a0606083015262001c2860a083018562001a79565b828103608084015262001c3c818562001abe565b98975050505050505050565b60006101608d83528c602084015280604084015262001c6a8184018d62001abe565b838103606085015262001c7e818d62001a79565b915050828103608084015262001c95818b62001abe565b83810360a085015262001ca9818b62001a79565b6001600160a01b038a1660c086015284810360e0860152915062001cd09050818862001aef565b61010084019690965250506101208101929092526101409091015298975050505050505050565b60006101008a835289602084015280604084015262001d198184018a62001abe565b838103606085015262001d2d818a62001a79565b915050828103608084015262001d44818862001abe565b60a084019690965250506001600160a01b039290921660c083015260e09091015295945050505050565b60008582528460208301526080604083015262001d8f608083018562001aef565b905082606083015295945050505050565b93845260ff9290921660208401526040830152606082015260800190565b60006020825262000e12602083018462001aef565b600060a0825262001de860a083018862001aef565b828103602084015262001dfc818862001aef565b838103604085015262001e10818862001aef565b60ff969096166060850152505050608001529392505050565b6020808252601690820152754d616c666f726d6564206c697374206f66206665657360501b604082015260600190565b6020808252603f908201527f537570706c6965642063757272656e742076616c696461746f727320616e642060408201527f706f7765727320646f206e6f74206d6174636820636865636b706f696e742e00606082015260800190565b60208082526036908201527f4e6577206261746368206e6f6e6365206d7573742062652067726561746572206040820152757468616e207468652063757272656e74206e6f6e636560501b606082015260800190565b6020808252601f908201527f4d616c666f726d6564206261746368206f66207472616e73616374696f6e7300604082015260600190565b6020808252603d908201527f4e657720696e76616c69646174696f6e206e6f6e6365206d757374206265206760408201527f726561746572207468616e207468652063757272656e74206e6f6e6365000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260099082015268151a5b5959081bdd5d60ba1b604082015260600190565b60208082526023908201527f56616c696461746f72207369676e617475726520646f6573206e6f74206d617460408201526231b41760e91b606082015260800190565b6020808252603b908201527f42617463682074696d656f7574206d757374206265206772656174657220746860408201527f616e207468652063757272656e7420626c6f636b206865696768740000000000606082015260800190565b60208082526021908201527f4d616c666f726d6564206c697374206f6620746f6b656e207472616e736665726040820152607360f81b606082015260800190565b6020808252601b908201527f4d616c666f726d6564206e65772076616c696461746f72207365740000000000604082015260600190565b6020808252603c908201527f5375626d69747465642076616c696461746f7220736574207369676e6174757260408201527f657320646f206e6f74206861766520656e6f75676820706f7765722e00000000606082015260800190565b60208082526037908201527f4e65772076616c736574206e6f6e6365206d757374206265206772656174657260408201527f207468616e207468652063757272656e74206e6f6e6365000000000000000000606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f4d616c666f726d65642063757272656e742076616c696461746f722073657400604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600084825260606020830152620022d6606083018562001a79565b8281036040840152620022ea818562001abe565b9695505050505050565b918252602082015260400190565b6040518181016001600160401b03811182821017156200232157600080fd5b604052919050565b60006001600160401b038211156200233f578081fd5b5060209081020190565b60005b83811015620023665781810151838201526020016200234c565b8381111562000e67575050600091015256fe60806040526000196006553480156200001757600080fd5b5060405162000e7c38038062000e7c833981810160405260808110156200003d57600080fd5b8151602083018051604051929492938301929190846401000000008211156200006557600080fd5b9083019060208201858111156200007b57600080fd5b82516401000000008111828201881017156200009657600080fd5b82525081516020918201929091019080838360005b83811015620000c5578181015183820152602001620000ab565b50505050905090810190601f168015620000f35780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011757600080fd5b9083019060208201858111156200012d57600080fd5b82516401000000008111828201881017156200014857600080fd5b82525081516020918201929091019080838360005b83811015620001775781810151838201526020016200015d565b50505050905090810190601f168015620001a55780820380516001836020036101000a031916815260200191505b5060405260209081015185519093508592508491620001ca91600391850190620003b7565b508051620001e0906004906020840190620003b7565b50506005805460ff191660121790555062000204816001600160e01b036200022216565b62000218846006546200023860201b60201c565b505050506200045c565b6005805460ff191660ff92909216919091179055565b6001600160a01b03821662000294576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002ab600083836001600160e01b036200035016565b620002c7816002546200035560201b620008731790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620002fa9183906200087362000355821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b505050565b600082820183811015620003b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003fa57805160ff19168380011785556200042a565b828001600101855582156200042a579182015b828111156200042a5782518255916020019190600101906200040d565b50620004389291506200043c565b5090565b6200045991905b8082111562000438576000815560010162000443565b90565b610a10806200046c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063395093511161007157806339509351146101d957806370a082311461020557806395d89b411461022b578063a457c2d714610233578063a9059cbb1461025f578063dd62ed3e1461028b576100a9565b806306fdde03146100ae578063095ea7b31461012b57806318160ddd1461016b57806323b872dd14610185578063313ce567146101bb575b600080fd5b6100b66102b9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101576004803603604081101561014157600080fd5b506001600160a01b03813516906020013561034f565b604080519115158252519081900360200190f35b61017361036c565b60408051918252519081900360200190f35b6101576004803603606081101561019b57600080fd5b506001600160a01b03813581169160208101359091169060400135610372565b6101c36103ff565b6040805160ff9092168252519081900360200190f35b610157600480360360408110156101ef57600080fd5b506001600160a01b038135169060200135610408565b6101736004803603602081101561021b57600080fd5b50356001600160a01b031661045c565b6100b6610477565b6101576004803603604081101561024957600080fd5b506001600160a01b0381351690602001356104d8565b6101576004803603604081101561027557600080fd5b506001600160a01b038135169060200135610546565b610173600480360360408110156102a157600080fd5b506001600160a01b038135811691602001351661055a565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b820191906000526020600020905b81548152906001019060200180831161032857829003601f168201915b5050505050905090565b600061036361035c610585565b8484610589565b50600192915050565b60025490565b600061037f848484610675565b6103f58461038b610585565b6103f085604051806060016040528060288152602001610945602891396001600160a01b038a166000908152600160205260408120906103c9610585565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6107dc16565b610589565b5060019392505050565b60055460ff1690565b6000610363610415610585565b846103f08560016000610426610585565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61087316565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103455780601f1061031a57610100808354040283529160200191610345565b60006103636104e5610585565b846103f0856040518060600160405280602581526020016109b6602591396001600061050f610585565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6107dc16565b6000610363610553610585565b8484610675565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ce5760405162461bcd60e51b81526004018080602001828103825260248152602001806109926024913960400191505060405180910390fd5b6001600160a01b0382166106135760405162461bcd60e51b81526004018080602001828103825260228152602001806108fd6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106ba5760405162461bcd60e51b815260040180806020018281038252602581526020018061096d6025913960400191505060405180910390fd5b6001600160a01b0382166106ff5760405162461bcd60e51b81526004018080602001828103825260238152602001806108da6023913960400191505060405180910390fd5b61070a8383836108d4565b61074d8160405180606001604052806026815260200161091f602691396001600160a01b038616600090815260208190526040902054919063ffffffff6107dc16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610782908263ffffffff61087316565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561086b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610830578181015183820152602001610818565b50505050905090810190601f16801561085d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108cd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200211864a65ba4fcada1107d4ae1ca69b48c7432ab34ae7fefc255e8844bc5c6e64736f6c63430006060033a2646970667358221220229d4a9b3cba6af85dada19ebddeecb417bc626982ae584d0b6b08a201173d3a64736f6c63430006060033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/integration_tests/ethereum/contracts/CellarPoolShare.sol b/integration_tests/ethereum/contracts/CellarPoolShare.sol new file mode 100644 index 00000000..04c21ba8 --- /dev/null +++ b/integration_tests/ethereum/contracts/CellarPoolShare.sol @@ -0,0 +1,1659 @@ +/** + *Submitted for verification at Etherscan.io on 2021-08-06 +*/ + +//SPDX-License-Identifier: Apache-2.0 +// VolumeFi Software, Inc. + +pragma solidity ^0.7.6; +pragma abicoder v2; + +interface IERC20 { + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval( + address indexed owner, + address indexed spender, + uint256 value + ); + + function approve(address spender, uint256 amount) external returns (bool); + + function transfer(address recipient, uint256 amount) + external + returns (bool); + + function transferFrom( + address sender, + address recipient, + uint256 amount + ) external returns (bool); + + function allowance(address owner, address spender) + external + view + returns (uint256); + + function balanceOf(address account) external view returns (uint256); + + function totalSupply() external view returns (uint256); +} + +interface INonfungiblePositionManager { + struct MintParams { + address token0; + address token1; + uint24 fee; + int24 tickLower; + int24 tickUpper; + uint256 amount0Desired; + uint256 amount1Desired; + uint256 amount0Min; + uint256 amount1Min; + address recipient; + uint256 deadline; + } + + struct IncreaseLiquidityParams { + uint256 tokenId; + uint256 amount0Desired; + uint256 amount1Desired; + uint256 amount0Min; + uint256 amount1Min; + uint256 deadline; + } + + struct DecreaseLiquidityParams { + uint256 tokenId; + uint128 liquidity; + uint256 amount0Min; + uint256 amount1Min; + uint256 deadline; + } + + struct CollectParams { + uint256 tokenId; + address recipient; + uint128 amount0Max; + uint128 amount1Max; + } + + function mint(MintParams calldata params) + external + payable + returns ( + uint256 tokenId, + uint128 liquidity, + uint256 amount0, + uint256 amount1 + ); + + function increaseLiquidity(IncreaseLiquidityParams calldata params) + external + payable + returns ( + uint128 liquidity, + uint256 amount0, + uint256 amount1 + ); + + function decreaseLiquidity(DecreaseLiquidityParams calldata params) + external + payable + returns (uint256 amount0, uint256 amount1); + + function collect(CollectParams calldata params) + external + payable + returns (uint256 amount0, uint256 amount1); + + function burn(uint256 tokenId) external payable; + + function positions(uint256 tokenId) + external + view + returns ( + uint96 nonce, + address operator, + address token0, + address token1, + uint24 fee, + int24 tickLower, + int24 tickUpper, + uint128 liquidity, + uint256 feeGrowthInside0LastX128, + uint256 feeGrowthInside1LastX128, + uint128 tokensOwed0, + uint128 tokensOwed1 + ); +} + +interface ISwapRouter { + struct ExactInputSingleParams { + address tokenIn; + address tokenOut; + uint24 fee; + address recipient; + uint256 deadline; + uint256 amountIn; + uint256 amountOutMinimum; + uint160 sqrtPriceLimitX96; + } + + function exactInputSingle(ExactInputSingleParams calldata params) + external + payable + returns (uint256 amountOut); +} + +interface IUniswapV3Factory { + function getPool( + address tokenA, + address tokenB, + uint24 fee + ) external view returns (address pool); +} + +interface IUniswapV3Pool { + function slot0() + external + view + returns ( + uint160 sqrtPriceX96, + int24 tick, + uint16 observationIndex, + uint16 observationCardinality, + uint16 observationCardinalityNext, + uint8 feeProtocol, + bool unlocked + ); +} + +library Address { + function functionCall(address target, bytes memory data) + internal + returns (bytes memory) + { + return functionCall(target, data, "R2");//"Address: low-level call failed" + } + + function functionCall( + address target, + bytes memory data, + string memory errorMessage + ) internal returns (bytes memory) { + return functionCallWithValue(target, data, 0, errorMessage); + } + + function functionCallWithValue( + address target, + bytes memory data, + uint256 value + ) internal returns (bytes memory) { + return + functionCallWithValue( + target, + data, + value, + "R3"//"Address: low-level call with value failed" + ); + } + + function functionCallWithValue( + address target, + bytes memory data, + uint256 value, + string memory errorMessage + ) internal returns (bytes memory) { + require( + address(this).balance >= value, + "R4"//"insufficient balance for call" + ); + require(isContract(target), "R5");//"Address: call to non-contract" + + (bool success, bytes memory returndata) = + target.call{value: value}(data); + return _verifyCallResult(success, returndata, errorMessage); + } + + function isContract(address account) internal view returns (bool) { + uint256 size; + assembly { + size := extcodesize(account) + } + return size > 0; + } + + function _verifyCallResult( + bool success, + bytes memory returndata, + string memory errorMessage + ) private pure returns (bytes memory) { + if (success) { + return returndata; + } else { + if (returndata.length > 0) { + assembly { + let returndata_size := mload(returndata) + revert(add(32, returndata), returndata_size) + } + } else { + revert(errorMessage); + } + } + } +} + +library SafeERC20 { + using Address for address; + + function safeTransfer( + IERC20 token, + address to, + uint256 value + ) internal { + _callOptionalReturn( + token, + abi.encodeWithSelector(token.transfer.selector, to, value) + ); + } + + function safeTransferFrom( + IERC20 token, + address from, + address to, + uint256 value + ) internal { + _callOptionalReturn( + token, + abi.encodeWithSelector(token.transferFrom.selector, from, to, value) + ); + } + + function safeApprove( + IERC20 token, + address spender, + uint256 value + ) internal { + require( + (value == 0) || (token.allowance(address(this), spender) == 0), + "R6"//"approve non-zero to non-zero" + ); + _callOptionalReturn( + token, + abi.encodeWithSelector(token.approve.selector, spender, value) + ); + } + + function _callOptionalReturn(IERC20 token, bytes memory data) private { + bytes memory returndata = + address(token).functionCall( + data, + "R7"//"SafeERC20: low-level call failed" + ); + if (returndata.length > 0) { + require( + abi.decode(returndata, (bool)), + "R8"//"ERC20 operation did not succeed" + ); + } + } +} + +library FixedPoint96 { + uint256 internal constant Q96 = 0x1000000000000000000000000; +} + +library FullMath { + function mulDiv( + uint256 a, + uint256 b, + uint256 denominator + ) internal pure returns (uint256 result) { + uint256 prod0; // Least significant 256 bits of the product + uint256 prod1; // Most significant 256 bits of the product + assembly { + let mm := mulmod(a, b, not(0)) + prod0 := mul(a, b) + prod1 := sub(sub(mm, prod0), lt(mm, prod0)) + } + + if (prod1 == 0) { + require(denominator > 0); + assembly { + result := div(prod0, denominator) + } + return result; + } + + require(denominator > prod1); + + uint256 remainder; + assembly { + remainder := mulmod(a, b, denominator) + } + assembly { + prod1 := sub(prod1, gt(remainder, prod0)) + prod0 := sub(prod0, remainder) + } + + uint256 twos = -denominator & denominator; + + assembly { + denominator := div(denominator, twos) + } + + assembly { + prod0 := div(prod0, twos) + } + + assembly { + twos := add(div(sub(0, twos), twos), 1) + } + prod0 |= prod1 * twos; + + uint256 inv = (3 * denominator) ^ 2; + + inv *= 2 - denominator * inv; // inverse mod 2**8 + inv *= 2 - denominator * inv; // inverse mod 2**16 + inv *= 2 - denominator * inv; // inverse mod 2**32 + inv *= 2 - denominator * inv; // inverse mod 2**64 + inv *= 2 - denominator * inv; // inverse mod 2**128 + inv *= 2 - denominator * inv; // inverse mod 2**256 + + result = prod0 * inv; + return result; + } +} + +library TickMath { + int24 internal constant MIN_TICK = -887272; + int24 internal constant MAX_TICK = -MIN_TICK; + + function getSqrtRatioAtTick(int24 tick) + internal + pure + returns (uint160 sqrtPriceX96) + { + uint256 absTick = + tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick)); + require(absTick <= uint256(MAX_TICK), "T"); + + uint256 ratio = + absTick & 0x1 != 0 + ? 0xfffcb933bd6fad37aa2d162d1a594001 + : 0x100000000000000000000000000000000; + if (absTick & 0x2 != 0) + ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128; + if (absTick & 0x4 != 0) + ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128; + if (absTick & 0x8 != 0) + ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128; + if (absTick & 0x10 != 0) + ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128; + if (absTick & 0x20 != 0) + ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128; + if (absTick & 0x40 != 0) + ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128; + if (absTick & 0x80 != 0) + ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128; + if (absTick & 0x100 != 0) + ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128; + if (absTick & 0x200 != 0) + ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128; + if (absTick & 0x400 != 0) + ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128; + if (absTick & 0x800 != 0) + ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128; + if (absTick & 0x1000 != 0) + ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128; + if (absTick & 0x2000 != 0) + ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128; + if (absTick & 0x4000 != 0) + ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128; + if (absTick & 0x8000 != 0) + ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128; + if (absTick & 0x10000 != 0) + ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128; + if (absTick & 0x20000 != 0) + ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128; + if (absTick & 0x40000 != 0) + ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128; + if (absTick & 0x80000 != 0) + ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128; + + if (tick > 0) ratio = type(uint256).max / ratio; + + sqrtPriceX96 = uint160( + (ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1) + ); + } +} + +library LiquidityAmounts { + function toUint128(uint256 x) private pure returns (uint128 y) { + require((y = uint128(x)) == x); + } + + function getLiquidityForAmount0( + uint160 sqrtRatioAX96, + uint160 sqrtRatioBX96, + uint256 amount0 + ) internal pure returns (uint128 liquidity) { + if (sqrtRatioAX96 > sqrtRatioBX96) + (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96); + uint256 intermediate = + FullMath.mulDiv(sqrtRatioAX96, sqrtRatioBX96, FixedPoint96.Q96); + return + toUint128( + FullMath.mulDiv( + amount0, + intermediate, + sqrtRatioBX96 - sqrtRatioAX96 + ) + ); + } + + function getLiquidityForAmount1( + uint160 sqrtRatioAX96, + uint160 sqrtRatioBX96, + uint256 amount1 + ) internal pure returns (uint128 liquidity) { + if (sqrtRatioAX96 > sqrtRatioBX96) + (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96); + return + toUint128( + FullMath.mulDiv( + amount1, + FixedPoint96.Q96, + sqrtRatioBX96 - sqrtRatioAX96 + ) + ); + } + + function getLiquidityForAmounts( + uint160 sqrtRatioX96, + uint160 sqrtRatioAX96, + uint160 sqrtRatioBX96, + uint256 amount0, + uint256 amount1 + ) internal pure returns (uint128 liquidity) { + if (sqrtRatioAX96 > sqrtRatioBX96) + (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96); + + if (sqrtRatioX96 <= sqrtRatioAX96) { + liquidity = getLiquidityForAmount0( + sqrtRatioAX96, + sqrtRatioBX96, + amount0 + ); + } else if (sqrtRatioX96 < sqrtRatioBX96) { + uint128 liquidity0 = + getLiquidityForAmount0(sqrtRatioX96, sqrtRatioBX96, amount0); + uint128 liquidity1 = + getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioX96, amount1); + + liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1; + } else { + liquidity = getLiquidityForAmount1( + sqrtRatioAX96, + sqrtRatioBX96, + amount1 + ); + } + } +} + +interface ICellarPoolShare is IERC20 { + struct MintParams { + address token0; + address token1; + uint24 fee; + int24 tickLower; + int24 tickUpper; + uint256 amount0Desired; + uint256 amount1Desired; + uint256 amount0Min; + uint256 amount1Min; + address recipient; + uint256 deadline; + } + + struct MintResult { + uint256 tokenId; + uint128 liquidity; + uint256 amount0; + uint256 amount1; + } + + struct CellarAddParams { + uint256 amount0Desired; + uint256 amount1Desired; + uint256 amount0Min; + uint256 amount1Min; + address recipient; + uint256 deadline; + } + + struct CellarRemoveParams { + uint256 tokenAmount; + uint256 amount0Min; + uint256 amount1Min; + address recipient; + uint256 deadline; + } + + struct CellarTickInfo { + uint184 tokenId; + int24 tickUpper; + int24 tickLower; + uint24 weight; + } + + struct UintPair { + uint256 a; + uint256 b; + } + + event AddedLiquidity( + address indexed token0, + address indexed token1, + uint128 liquidity, + uint256 amount0, + uint256 amount1 + ); + + event RemovedLiquidity( + address indexed token0, + address indexed token1, + uint128 liquidity, + uint256 amount0, + uint256 amount1 + ); + + function addLiquidityForUniV3(CellarAddParams calldata cellarParams) + external; + + function addLiquidityEthForUniV3(CellarAddParams calldata cellarParams) + external + payable; + + function removeLiquidityFromUniV3(CellarRemoveParams calldata cellarParams) + external; + + function removeLiquidityEthFromUniV3( + CellarRemoveParams calldata cellarParams + ) external; + + function reinvest() external; + + function setValidator(address _validator, bool value) external; + + function transferOwnership(address newOwner) external; + + function setFee(uint16 newFee) external; + + function owner() external view returns (address); + + function name() external view returns (string memory); + + function symbol() external view returns (string memory); + + function decimals() external pure returns (uint8); +} + +interface IWETH { + function deposit() external payable; + + function withdraw(uint256) external; +} + +contract BlockLock { + // how many blocks are the functions locked for + uint256 private constant BLOCK_LOCK_COUNT = 1; + // last block for which this address is timelocked + mapping(address => uint256) public lastLockedBlock; + + function lock(address _address) internal { + lastLockedBlock[_address] = block.number + BLOCK_LOCK_COUNT; + } + + modifier notLocked(address lockedAddress) { + require(lastLockedBlock[lockedAddress] <= block.number, "R30");//"Locked" + _; + } +} + +contract CellarPoolShare is ICellarPoolShare, BlockLock { + using SafeERC20 for IERC20; + + address constant NONFUNGIBLEPOSITIONMANAGER = + 0xC36442b4a4522E871399CD717aBDD847Ab11FE88; + + address constant UNISWAPV3FACTORY = + 0x1F98431c8aD98523631AE4a59f267346ea31F984; + + address constant SWAPROUTER = + 0xE592427A0AEce92De3Edee1F18E0157C05861564; + + address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; + + uint16 constant FEEDOMINATOR = 10000; + + mapping(address => uint256) private _balances; + + mapping(address => mapping(address => uint256)) private _allowances; + + mapping(address => bool) public validator; + uint256 private _totalSupply; + address private _owner; + string private _name; + string private _symbol; + + address public immutable token0; + address public immutable token1; + uint24 public immutable feeLevel; + CellarTickInfo[] public cellarTickInfo; + bool private _isEntered; + uint16 public fee = 1000; + + constructor( + string memory name_, + string memory symbol_, + address _token0, + address _token1, + uint24 _feeLevel, + CellarTickInfo[] memory _cellarTickInfo + ) { + _name = name_; + _symbol = symbol_; + require(_token0 < _token1, "R9");//"Tokens are not sorted" + token0 = _token0; + token1 = _token1; + feeLevel = _feeLevel; + for (uint256 i = 0; i < _cellarTickInfo.length; i++) { + require(_cellarTickInfo[i].weight > 0, "R10");//"Weight cannot be zero" + require(_cellarTickInfo[i].tokenId == 0, "R11");//"tokenId is not empty" + if (i > 0) { + require(_cellarTickInfo[i].tickUpper <= _cellarTickInfo[i - 1].tickLower, "R12");//"Wrong tick tier" + } + cellarTickInfo.push( + CellarTickInfo({ + tokenId: 0, + tickUpper: _cellarTickInfo[i].tickUpper, + tickLower: _cellarTickInfo[i].tickLower, + weight: _cellarTickInfo[i].weight + }) + ); + } + _owner = msg.sender; + } + + modifier onlyValidator() { + require(validator[msg.sender], "R13");//"Not validator" + _; + } + + modifier nonReentrant() { + require(!_isEntered, "R14");//"reentrant call" + _isEntered = true; + _; + _isEntered = false; + } + + function transfer(address recipient, uint256 amount) + external + override + returns (bool) + { + _transfer(msg.sender, recipient, amount); + return true; + } + + function approve(address spender, uint256 amount) + external + override + returns (bool) + { + _approve(msg.sender, spender, amount); + return true; + } + + function transferFrom( + address sender, + address recipient, + uint256 amount + ) external override returns (bool) { + _transfer(sender, recipient, amount); + uint256 currentAllowance = _allowances[sender][msg.sender]; + require(currentAllowance >= amount, "R15");//"transfer exceeds allowance" + _approve(sender, msg.sender, currentAllowance - amount); + return true; + } + + function addLiquidityForUniV3(CellarAddParams calldata cellarParams) + external + override + notLocked(msg.sender) + { + lock(msg.sender); + require(block.timestamp <= cellarParams.deadline); + IERC20(token0).safeTransferFrom( + msg.sender, + address(this), + cellarParams.amount0Desired + ); + + IERC20(token1).safeTransferFrom( + msg.sender, + address(this), + cellarParams.amount1Desired + ); + + ( + uint256 inAmount0, + uint256 inAmount1, + uint128 liquidityBefore, + uint128 liquiditySum + ) = _addLiquidity(cellarParams); + + if (liquidityBefore == 0) { + _mint(msg.sender, liquiditySum); + } else { + _mint( + msg.sender, + FullMath.mulDiv(liquiditySum, _totalSupply, liquidityBefore) + ); + } + require(inAmount0 >= cellarParams.amount0Min, "R16");//"Less than Amount0Min" + require(inAmount1 >= cellarParams.amount1Min, "R17");//"Less than Amount1Min" + + if (cellarParams.amount0Desired > inAmount0) { + IERC20(token0).safeTransfer( + msg.sender, + cellarParams.amount0Desired - inAmount0 + ); + } + if (cellarParams.amount1Desired > inAmount1) { + IERC20(token1).safeTransfer( + msg.sender, + cellarParams.amount1Desired - inAmount1 + ); + } + emit AddedLiquidity(token0, token1, liquiditySum, inAmount0, inAmount1); + } + + function addLiquidityEthForUniV3(CellarAddParams calldata cellarParams) + external + payable + override + nonReentrant + notLocked(msg.sender) + { + lock(msg.sender); + require(block.timestamp <= cellarParams.deadline); + if (token0 == WETH) { + if (msg.value > cellarParams.amount0Desired) { + payable(msg.sender).transfer( + msg.value - cellarParams.amount0Desired + ); + } else { + require( + msg.value == cellarParams.amount0Desired, + "R18"//"Eth not enough" + ); + } + IWETH(WETH).deposit{value: cellarParams.amount0Desired}(); + IERC20(token1).safeTransferFrom( + msg.sender, + address(this), + cellarParams.amount1Desired + ); + } else { + require(token1 == WETH, "R19");//"Not Eth Pair" + if (msg.value > cellarParams.amount1Desired) { + payable(msg.sender).transfer( + msg.value - cellarParams.amount1Desired + ); + } else { + require( + msg.value == cellarParams.amount1Desired, + "R18" + ); + } + IWETH(WETH).deposit{value: cellarParams.amount1Desired}(); + IERC20(token0).safeTransferFrom( + msg.sender, + address(this), + cellarParams.amount0Desired + ); + } + + ( + uint256 inAmount0, + uint256 inAmount1, + uint128 liquidityBefore, + uint128 liquiditySum + ) = _addLiquidity(cellarParams); + + if (liquidityBefore == 0) { + _mint(msg.sender, liquiditySum); + } else { + _mint( + msg.sender, + FullMath.mulDiv(liquiditySum, _totalSupply, liquidityBefore) + ); + } + + require(inAmount0 >= cellarParams.amount0Min, "R16"); + require(inAmount1 >= cellarParams.amount1Min, "R17"); + + uint256 retAmount0 = cellarParams.amount0Desired - inAmount0; + uint256 retAmount1 = cellarParams.amount1Desired - inAmount1; + + if (retAmount0 > 0) { + if (token0 == WETH) { + IWETH(WETH).withdraw(retAmount0); + msg.sender.transfer(retAmount0); + } else { + IERC20(token0).safeTransfer(msg.sender, retAmount0); + } + } + if (retAmount1 > 0) { + if (token1 == WETH) { + IWETH(WETH).withdraw(retAmount1); + msg.sender.transfer(retAmount1); + } else { + IERC20(token1).safeTransfer(msg.sender, retAmount1); + } + } + emit AddedLiquidity(token0, token1, liquiditySum, inAmount0, inAmount1); + } + + function removeLiquidityEthFromUniV3( + CellarRemoveParams calldata cellarParams + ) external override nonReentrant notLocked(msg.sender) { + lock(msg.sender); + require(block.timestamp <= cellarParams.deadline); + (uint256 outAmount0, uint256 outAmount1, uint128 liquiditySum) = + _removeLiquidity(cellarParams); + _burn(msg.sender, cellarParams.tokenAmount); + + require(outAmount0 >= cellarParams.amount0Min, "R16"); + require(outAmount1 >= cellarParams.amount1Min, "R17"); + + if (token0 == WETH) { + IWETH(WETH).withdraw(outAmount0); + msg.sender.transfer(outAmount0); + IERC20(token1).safeTransfer(msg.sender, outAmount1); + } else { + require(token1 == WETH, "R19"); + IWETH(WETH).withdraw(outAmount1); + msg.sender.transfer(outAmount1); + IERC20(token0).safeTransfer(msg.sender, outAmount0); + } + emit RemovedLiquidity( + token0, + token1, + liquiditySum, + outAmount0, + outAmount1 + ); + } + + function removeLiquidityFromUniV3(CellarRemoveParams calldata cellarParams) + external + override + notLocked(msg.sender) + { + lock(msg.sender); + require(block.timestamp <= cellarParams.deadline); + (uint256 outAmount0, uint256 outAmount1, uint128 liquiditySum) = + _removeLiquidity(cellarParams); + _burn(msg.sender, cellarParams.tokenAmount); + + require(outAmount0 >= cellarParams.amount0Min, "R16"); + require(outAmount1 >= cellarParams.amount1Min, "R17"); + + IERC20(token0).safeTransfer(msg.sender, outAmount0); + IERC20(token1).safeTransfer(msg.sender, outAmount1); + emit RemovedLiquidity( + token0, + token1, + liquiditySum, + outAmount0, + outAmount1 + ); + } + + function reinvest() external override onlyValidator notLocked(msg.sender) { + CellarTickInfo[] memory _cellarTickInfo = cellarTickInfo; + uint256 weightSum; + uint256 balance0; + uint256 balance1; + for (uint256 index = 0; index < _cellarTickInfo.length; index++) { + require(_cellarTickInfo[index].tokenId != 0, "R20");//"NFLP doesnot exist" + weightSum += _cellarTickInfo[index].weight; + (uint256 amount0, uint256 amount1) = + INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER).collect( + INonfungiblePositionManager.CollectParams({ + tokenId: _cellarTickInfo[index].tokenId, + recipient: address(this), + amount0Max: type(uint128).max, + amount1Max: type(uint128).max + }) + ); + balance0 += amount0; + balance1 += amount1; + } + uint256 fee0 = (balance0 * fee) / FEEDOMINATOR; + uint256 fee1 = (balance1 * fee) / FEEDOMINATOR; + if (fee0 > 0) { + IERC20(token0).safeTransfer(_owner, fee0); + } + if (fee1 > 0) { + IERC20(token1).safeTransfer(_owner, fee1); + } + balance0 = IERC20(token0).balanceOf(address(this)); + balance1 = IERC20(token1).balanceOf(address(this)); + + (uint256 inAmount0, uint256 inAmount1, , ) = + _addLiquidity( + CellarAddParams({ + amount0Desired: balance0, + amount1Desired: balance1, + amount0Min: 0, + amount1Min: 0, + recipient: address(this), + deadline: type(uint256).max + }) + ); + balance0 -= inAmount0; + balance1 -= inAmount1; + (uint160 sqrtPriceX96, , , , , , ) = + IUniswapV3Pool( + IUniswapV3Factory(UNISWAPV3FACTORY).getPool( + token0, + token1, + feeLevel + ) + ) + .slot0(); + if (balance0 * inAmount1 > balance1 * inAmount0) { + uint256 swapAmount = (balance0 * inAmount1 - balance1 * inAmount0) + / + (FullMath.mulDiv( + FullMath.mulDiv( + inAmount0, + sqrtPriceX96, + FixedPoint96.Q96), + sqrtPriceX96, + FixedPoint96.Q96) + + inAmount1); + IERC20(token0).safeApprove(SWAPROUTER, swapAmount); + try ISwapRouter(SWAPROUTER).exactInputSingle( + ISwapRouter.ExactInputSingleParams({ + tokenIn: token0, + tokenOut: token1, + fee: feeLevel, + recipient: address(this), + deadline: type(uint256).max, + amountIn: swapAmount, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }) + ) {} catch {} + IERC20(token0).safeApprove(SWAPROUTER, 0); + } + if (balance0 * inAmount1 < balance1 * inAmount0) { + uint256 swapAmount = (balance1 * inAmount0 - balance0 * inAmount1) + / + (FullMath.mulDiv( + FullMath.mulDiv( + inAmount1, + FixedPoint96.Q96, + sqrtPriceX96), + FixedPoint96.Q96, + sqrtPriceX96) + + inAmount0); + IERC20(token1).safeApprove(SWAPROUTER, swapAmount); + try ISwapRouter(SWAPROUTER).exactInputSingle( + ISwapRouter.ExactInputSingleParams({ + tokenIn: token1, + tokenOut: token0, + fee: feeLevel, + recipient: address(this), + deadline: type(uint256).max, + amountIn: swapAmount, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }) + ) {} catch {} + IERC20(token1).safeApprove(SWAPROUTER, 0); + } + + balance0 = IERC20(token0).balanceOf(address(this)); + balance1 = IERC20(token1).balanceOf(address(this)); + _addLiquidity( + CellarAddParams({ + amount0Desired: balance0, + amount1Desired: balance1, + amount0Min: 0, + amount1Min: 0, + recipient: address(this), + deadline: type(uint256).max + }) + ); + } + + function rebalance(CellarTickInfo[] memory _cellarTickInfo) external notLocked(msg.sender) { + require(msg.sender == _owner, "R21");//"Not owner" + CellarRemoveParams memory removeParams = + CellarRemoveParams({ + tokenAmount: _totalSupply, + amount0Min: 0, + amount1Min: 0, + recipient: address(this), + deadline: type(uint256).max + }); + _removeLiquidity(removeParams); + CellarTickInfo[] memory _oldCellarTickInfo = cellarTickInfo; + for (uint256 i = 0; i < _oldCellarTickInfo.length; i++) { + INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER).burn( + _oldCellarTickInfo[i].tokenId + ); + } + delete cellarTickInfo; + for (uint256 i = 0; i < _cellarTickInfo.length; i++) { + require(_cellarTickInfo[i].tickUpper > _cellarTickInfo[i].tickLower, "R12"); + if (i > 0) { + require(_cellarTickInfo[i].tickUpper <= _cellarTickInfo[i - 1].tickLower, "R12"); + } + require(_cellarTickInfo[i].weight > 0, "R10"); + require(_cellarTickInfo[i].tokenId == 0, "R11"); + cellarTickInfo.push(_cellarTickInfo[i]); + } + + uint256 balance0 = IERC20(token0).balanceOf(address(this)); + uint256 balance1 = IERC20(token1).balanceOf(address(this)); + + (uint256 inAmount0, uint256 inAmount1, , ) = + _addLiquidity( + CellarAddParams({ + amount0Desired: balance0, + amount1Desired: balance1, + amount0Min: 0, + amount1Min: 0, + recipient: address(this), + deadline: type(uint256).max + }) + ); + + balance0 -= inAmount0; + balance1 -= inAmount1; + (uint160 sqrtPriceX96, , , , , , ) = + IUniswapV3Pool( + IUniswapV3Factory(UNISWAPV3FACTORY).getPool( + token0, + token1, + feeLevel + ) + ) + .slot0(); + if (balance0 * inAmount1 > balance1 * inAmount0) { + uint256 swapAmount = (balance0 * inAmount1 - balance1 * inAmount0) + / + (FullMath.mulDiv( + FullMath.mulDiv( + inAmount0, + sqrtPriceX96, + FixedPoint96.Q96), + sqrtPriceX96, + FixedPoint96.Q96) + + inAmount1); + IERC20(token0).safeApprove(SWAPROUTER, swapAmount); + try ISwapRouter(SWAPROUTER).exactInputSingle( + ISwapRouter.ExactInputSingleParams({ + tokenIn: token0, + tokenOut: token1, + fee: feeLevel, + recipient: address(this), + deadline: type(uint256).max, + amountIn: swapAmount, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }) + ) {} catch {} + IERC20(token0).safeApprove(SWAPROUTER, 0); + } + if (balance0 * inAmount1 < balance1 * inAmount0) { + uint256 swapAmount = (balance1 * inAmount0 - balance0 * inAmount1) + / + (FullMath.mulDiv( + FullMath.mulDiv( + inAmount1, + FixedPoint96.Q96, + sqrtPriceX96), + FixedPoint96.Q96, + sqrtPriceX96) + + inAmount0); + IERC20(token1).safeApprove(SWAPROUTER, swapAmount); + try ISwapRouter(SWAPROUTER).exactInputSingle( + ISwapRouter.ExactInputSingleParams({ + tokenIn: token1, + tokenOut: token0, + fee: feeLevel, + recipient: address(this), + deadline: type(uint256).max, + amountIn: swapAmount, + amountOutMinimum: 0, + sqrtPriceLimitX96: 0 + }) + ) {} catch {} + IERC20(token1).safeApprove(SWAPROUTER, 0); + } + + balance0 = IERC20(token0).balanceOf(address(this)); + balance1 = IERC20(token1).balanceOf(address(this)); + _addLiquidity( + CellarAddParams({ + amount0Desired: balance0, + amount1Desired: balance1, + amount0Min: 0, + amount1Min: 0, + recipient: address(this), + deadline: type(uint256).max + }) + ); + } + + function setValidator(address _validator, bool value) external override { + require(msg.sender == _owner, "R21"); + validator[_validator] = value; + } + + function transferOwnership(address newOwner) external override { + require(msg.sender == _owner, "R21"); + _owner = newOwner; + } + + function setFee(uint16 newFee) external override { + require(msg.sender == _owner, "R21"); + fee = newFee; + } + + function owner() external view override returns (address) { + return _owner; + } + + function name() external view override returns (string memory) { + return _name; + } + + function symbol() external view override returns (string memory) { + return _symbol; + } + + function decimals() external pure override returns (uint8) { + return 18; + } + + function totalSupply() external view override returns (uint256) { + return _totalSupply; + } + + function balanceOf(address account) + external + view + override + returns (uint256) + { + return _balances[account]; + } + + function allowance(address owner_, address spender) + external + view + override + returns (uint256) + { + return _allowances[owner_][spender]; + } + + function _transfer( + address sender, + address recipient, + uint256 amount + ) internal { + require(sender != address(0), "R22");//"transfer from zero address" + require(recipient != address(0), "R23");//"transfer to zero address" + + _beforeTokenTransfer(sender, recipient, amount); + + uint256 senderBalance = _balances[sender]; + require(senderBalance >= amount, "R24");//"transfer exceeds balance" + _balances[sender] = senderBalance - amount; + _balances[recipient] += amount; + + emit Transfer(sender, recipient, amount); + } + + function _mint(address account, uint256 amount) internal { + require(account != address(0), "R25");//"mint to zero address" + + _beforeTokenTransfer(address(0), account, amount); + + _totalSupply += amount; + _balances[account] += amount; + emit Transfer(address(0), account, amount); + } + + function _burn(address account, uint256 amount) internal { + require(account != address(0), "R26");//"burn from zero address" + + _beforeTokenTransfer(account, address(0), amount); + + uint256 accountBalance = _balances[account]; + require(accountBalance >= amount, "R27");//"burn exceeds balance" + _balances[account] = accountBalance - amount; + _totalSupply -= amount; + + emit Transfer(account, address(0), amount); + } + + function _approve( + address owner_, + address spender, + uint256 amount + ) internal { + require(owner_ != address(0), "R28");//"approve from zero address" + require(spender != address(0), "R29");//"approve to zero address" + + _allowances[owner_][spender] = amount; + emit Approval(owner_, spender, amount); + } + + function _getWeightInfo(CellarTickInfo[] memory _cellarTickInfo) + internal + view + returns ( + uint256 weightSum0, + uint256 weightSum1, + uint128 liquidityBefore, + uint256[] memory weight0, + uint256[] memory weight1 + ) + { + weight0 = new uint256[](_cellarTickInfo.length); + weight1 = new uint256[](_cellarTickInfo.length); + (uint160 sqrtPriceX96, int24 currentTick, , , , , ) = + IUniswapV3Pool( + IUniswapV3Factory(UNISWAPV3FACTORY).getPool( + token0, + token1, + feeLevel + ) + ) + .slot0(); + UintPair memory sqrtPrice0; + + uint256 weight00; + uint256 weight10; + + sqrtPrice0.a = TickMath.getSqrtRatioAtTick( + _cellarTickInfo[0].tickLower + ); + sqrtPrice0.b = TickMath.getSqrtRatioAtTick( + _cellarTickInfo[0].tickUpper + ); + + weight00 = _cellarTickInfo[0].weight; + + weight10 = _cellarTickInfo[_cellarTickInfo.length - 1].weight; + for (uint16 i = 0; i < _cellarTickInfo.length; i++) { + if (_cellarTickInfo[i].tokenId > 0) { + (, , , , , , , uint128 liquidity, , , , ) = + INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER) + .positions(_cellarTickInfo[i].tokenId); + liquidityBefore += liquidity; + } + + UintPair memory sqrtCurrentTickPriceX96; + sqrtCurrentTickPriceX96.a = TickMath.getSqrtRatioAtTick( + _cellarTickInfo[i].tickLower + ); + sqrtCurrentTickPriceX96.b = TickMath.getSqrtRatioAtTick( + _cellarTickInfo[i].tickUpper + ); + + if (currentTick <= _cellarTickInfo[i].tickLower) { + weight0[i] = + (FullMath.mulDiv( + FullMath.mulDiv( + FullMath.mulDiv( + sqrtPrice0.a, + sqrtPrice0.b, + sqrtPrice0.b - sqrtPrice0.a + ), + sqrtCurrentTickPriceX96.b - + sqrtCurrentTickPriceX96.a, + sqrtCurrentTickPriceX96.b + ), + FixedPoint96.Q96, + sqrtCurrentTickPriceX96.a + ) * _cellarTickInfo[i].weight) / + weight00; + weightSum0 += weight0[i]; + } else if (currentTick >= _cellarTickInfo[i].tickUpper) { + weight1[i] = + (FullMath.mulDiv( + sqrtCurrentTickPriceX96.b - sqrtCurrentTickPriceX96.a, + FixedPoint96.Q96, + sqrtPrice0.b - sqrtPrice0.a + ) * _cellarTickInfo[i].weight) / + weight10; + weightSum1 += weight1[i]; + } else { + weight0[i] = + (FullMath.mulDiv( + FullMath.mulDiv( + FullMath.mulDiv( + sqrtPrice0.a, + sqrtPrice0.b, + sqrtPrice0.b - sqrtPrice0.a + ), + sqrtCurrentTickPriceX96.b - sqrtPriceX96, + sqrtCurrentTickPriceX96.b + ), + FixedPoint96.Q96, + sqrtPriceX96 + ) * _cellarTickInfo[i].weight) / + weight00; + + weight1[i] = + (FullMath.mulDiv( + sqrtPriceX96 - sqrtCurrentTickPriceX96.a, + FixedPoint96.Q96, + sqrtPrice0.b - sqrtPrice0.a + ) * _cellarTickInfo[i].weight) / + weight10; + weightSum0 += weight0[i]; + weightSum1 += weight1[i]; + } + } + } + + function _modifyWeightInfo( + CellarTickInfo[] memory _cellarTickInfo, + uint256 amount0Desired, + uint256 amount1Desired, + uint256 weightSum0, + uint256 weightSum1, + uint256[] memory weight0, + uint256[] memory weight1 + ) internal view returns (uint256 newWeightSum0, uint256 newWeightSum1) { + if (_cellarTickInfo.length == 1) { + return (weightSum0, weightSum1); + } + + UintPair memory liquidity; + (uint160 sqrtPriceX96, , , , , , ) = + IUniswapV3Pool( + IUniswapV3Factory(UNISWAPV3FACTORY).getPool( + token0, + token1, + feeLevel + ) + ) + .slot0(); + liquidity.a = LiquidityAmounts.getLiquidityForAmounts( + sqrtPriceX96, + TickMath.getSqrtRatioAtTick(_cellarTickInfo[0].tickLower), + TickMath.getSqrtRatioAtTick(_cellarTickInfo[0].tickUpper), + FullMath.mulDiv(amount0Desired, weight0[0], weightSum0), + FullMath.mulDiv(amount1Desired, weight1[0], weightSum1) + ); + uint256 tickLength = _cellarTickInfo.length - 1; + liquidity.b = LiquidityAmounts.getLiquidityForAmounts( + sqrtPriceX96, + TickMath.getSqrtRatioAtTick(_cellarTickInfo[tickLength].tickLower), + TickMath.getSqrtRatioAtTick(_cellarTickInfo[tickLength].tickUpper), + FullMath.mulDiv(amount0Desired, weight0[tickLength], weightSum0), + FullMath.mulDiv(amount1Desired, weight1[tickLength], weightSum1) + ); + + if ( + liquidity.a * _cellarTickInfo[tickLength].weight > + liquidity.b * _cellarTickInfo[0].weight + ) { + if (liquidity.b * _cellarTickInfo[0].weight > 0) { + newWeightSum0 = FullMath.mulDiv( + weightSum0, + liquidity.a * _cellarTickInfo[tickLength].weight, + liquidity.b * _cellarTickInfo[0].weight + ); + } + else { + newWeightSum0 = 0; + } + newWeightSum1 = weightSum1; + } else { + newWeightSum0 = weightSum0; + if (liquidity.a * _cellarTickInfo[tickLength].weight > 0) { + newWeightSum1 = FullMath.mulDiv( + weightSum1, + liquidity.b * _cellarTickInfo[0].weight, + liquidity.a * _cellarTickInfo[tickLength].weight + ); + } + else { + newWeightSum1 = 0; + } + } + } + + function _addLiquidity(CellarAddParams memory cellarParams) + internal + returns ( + uint256 inAmount0, + uint256 inAmount1, + uint128 liquidityBefore, + uint128 liquiditySum + ) + { + CellarTickInfo[] memory _cellarTickInfo = cellarTickInfo; + IERC20(token0).safeApprove( + NONFUNGIBLEPOSITIONMANAGER, + cellarParams.amount0Desired + ); + IERC20(token1).safeApprove( + NONFUNGIBLEPOSITIONMANAGER, + cellarParams.amount1Desired + ); + + uint256 weightSum0; + uint256 weightSum1; + uint256[] memory weight0 = new uint256[](_cellarTickInfo.length); + uint256[] memory weight1 = new uint256[](_cellarTickInfo.length); + + ( + weightSum0, + weightSum1, + liquidityBefore, + weight0, + weight1 + ) = _getWeightInfo(_cellarTickInfo); + if (weightSum0 > 0 && weightSum1 > 0) { + (weightSum0, weightSum1) = _modifyWeightInfo( + _cellarTickInfo, + cellarParams.amount0Desired, + cellarParams.amount1Desired, + weightSum0, + weightSum1, + weight0, + weight1 + ); + } + + for (uint16 i = 0; i < _cellarTickInfo.length; i++) { + INonfungiblePositionManager.MintParams memory mintParams = + INonfungiblePositionManager.MintParams({ + token0: token0, + token1: token1, + fee: feeLevel, + tickLower: _cellarTickInfo[i].tickLower, + tickUpper: _cellarTickInfo[i].tickUpper, + amount0Desired: 0, + amount1Desired: 0, + amount0Min: 0, + amount1Min: 0, + recipient: address(this), + deadline: cellarParams.deadline + }); + + INonfungiblePositionManager.IncreaseLiquidityParams + memory increaseLiquidityParams + = + INonfungiblePositionManager.IncreaseLiquidityParams({ + tokenId: _cellarTickInfo[i].tokenId, + amount0Desired: 0, + amount1Desired: 0, + amount0Min: 0, + amount1Min: 0, + deadline: cellarParams.deadline + }); + if (weightSum0 > 0) { + mintParams.amount0Desired = FullMath.mulDiv( + cellarParams.amount0Desired, + weight0[i], + weightSum0 + ); + increaseLiquidityParams.amount0Desired = mintParams + .amount0Desired; + mintParams.amount0Min = FullMath.mulDiv( + cellarParams.amount0Min, + weight0[i], + weightSum0 + ); + increaseLiquidityParams.amount0Min = mintParams.amount0Min; + } + if (weightSum1 > 0) { + mintParams.amount1Desired = FullMath.mulDiv( + cellarParams.amount1Desired, + weight1[i], + weightSum1 + ); + increaseLiquidityParams.amount1Desired = mintParams + .amount1Desired; + mintParams.amount1Min = FullMath.mulDiv( + cellarParams.amount1Min, + weight1[i], + weightSum1 + ); + increaseLiquidityParams.amount1Min = mintParams.amount1Min; + } + if ( + mintParams.amount0Desired > 0 || mintParams.amount1Desired > 0 + ) { + MintResult memory mintResult; + if (_cellarTickInfo[i].tokenId == 0) { + + try INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER) + .mint(mintParams) returns (uint256 r1, uint128 r2, uint256 r3, uint256 r4) { + mintResult.tokenId = r1; + mintResult.liquidity = r2; + mintResult.amount0 = r3; + mintResult.amount1 = r4; + } catch {} + + cellarTickInfo[i].tokenId = uint184(mintResult.tokenId); + + inAmount0 += mintResult.amount0; + inAmount1 += mintResult.amount1; + liquiditySum += mintResult.liquidity; + } else { + try INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER) + .increaseLiquidity(increaseLiquidityParams) returns (uint128 r1, uint256 r2, uint256 r3) { + mintResult.liquidity = r1; + mintResult.amount0 = r2; + mintResult.amount1 = r3; + } catch {} + inAmount0 += mintResult.amount0; + inAmount1 += mintResult.amount1; + liquiditySum += mintResult.liquidity; + } + } + } + IERC20(token0).safeApprove(NONFUNGIBLEPOSITIONMANAGER, 0); + IERC20(token1).safeApprove(NONFUNGIBLEPOSITIONMANAGER, 0); + } + + function _removeLiquidity(CellarRemoveParams memory cellarParams) + internal + returns ( + uint256 outAmount0, + uint256 outAmount1, + uint128 liquiditySum + ) + { + CellarTickInfo[] memory _cellarTickInfo = cellarTickInfo; + uint256 fee0; + uint256 fee1; + for (uint16 i = 0; i < _cellarTickInfo.length; i++) { + (, , , , , , , uint128 liquidity, , , , ) = + INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER) + .positions(_cellarTickInfo[i].tokenId); + uint128 outLiquidity = + uint128( + FullMath.mulDiv( + liquidity, + cellarParams.tokenAmount, + _totalSupply + ) + ); + + INonfungiblePositionManager.DecreaseLiquidityParams + memory decreaseLiquidityParams + = + INonfungiblePositionManager.DecreaseLiquidityParams({ + tokenId: _cellarTickInfo[i].tokenId, + liquidity: outLiquidity, + amount0Min: 0, + amount1Min: 0, + deadline: cellarParams.deadline + }); + (uint256 amount0, uint256 amount1) = + INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER) + .decreaseLiquidity(decreaseLiquidityParams); + (uint256 collectAmount0, uint256 collectAmount1) = + INonfungiblePositionManager(NONFUNGIBLEPOSITIONMANAGER).collect( + INonfungiblePositionManager.CollectParams({ + tokenId: _cellarTickInfo[i].tokenId, + recipient: address(this), + amount0Max: type(uint128).max, + amount1Max: type(uint128).max + }) + ); + fee0 += collectAmount0 - amount0; + fee1 += collectAmount1 - amount1; + outAmount0 += amount0; + outAmount1 += amount1; + liquiditySum += outLiquidity; + } + fee0 = (fee0 * fee) / FEEDOMINATOR; + fee1 = (fee1 * fee) / FEEDOMINATOR; + if (fee0 > 0) { + IERC20(token0).safeTransfer(_owner, fee0); + } + if (fee1 > 0) { + IERC20(token1).safeTransfer(_owner, fee1); + } + } + + function _beforeTokenTransfer( + address from, + address to, + uint256 amount + ) internal virtual {} + + receive() external payable {} +} \ No newline at end of file diff --git a/integration_tests/ethereum/contracts/CosmosToken.sol b/integration_tests/ethereum/contracts/CosmosToken.sol new file mode 100644 index 00000000..9dbd12a7 --- /dev/null +++ b/integration_tests/ethereum/contracts/CosmosToken.sol @@ -0,0 +1,16 @@ +pragma solidity ^0.6.6; +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +contract CosmosERC20 is ERC20 { + uint256 MAX_UINT = 2**256 - 1; + + constructor( + address _gravityAddress, + string memory _name, + string memory _symbol, + uint8 _decimals + ) public ERC20(_name, _symbol) { + _setupDecimals(_decimals); + _mint(_gravityAddress, MAX_UINT); + } +} diff --git a/integration_tests/ethereum/contracts/Gravity.sol b/integration_tests/ethereum/contracts/Gravity.sol new file mode 100644 index 00000000..4e163769 --- /dev/null +++ b/integration_tests/ethereum/contracts/Gravity.sol @@ -0,0 +1,604 @@ +pragma solidity ^0.6.6; + +import "@openzeppelin/contracts/math/SafeMath.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import "./CosmosToken.sol"; + +import "hardhat/console.sol"; + +pragma experimental ABIEncoderV2; + +// This is being used purely to avoid stack too deep errors + struct LogicCallArgs { + // Transfers out to the logic contract + uint256[] transferAmounts; + address[] transferTokenContracts; + // The fees (transferred to msg.sender) + uint256[] feeAmounts; + address[] feeTokenContracts; + // The arbitrary logic call + address logicContractAddress; + bytes payload; + // Invalidation metadata + uint256 timeOut; + bytes32 invalidationId; + uint256 invalidationNonce; + } + +contract Gravity is ReentrancyGuard { + using SafeMath for uint256; + using SafeERC20 for IERC20; + + // These are updated often + bytes32 public state_lastValsetCheckpoint; + mapping(address => uint256) public state_lastBatchNonces; + mapping(bytes32 => uint256) public state_invalidationMapping; + uint256 public state_lastValsetNonce = 0; + // event nonce zero is reserved by the Cosmos module as a special + // value indicating that no events have yet been submitted + uint256 public state_lastEventNonce = 1; + + // These are set once at initialization + bytes32 public state_gravityId; + uint256 public state_powerThreshold; + + // TransactionBatchExecutedEvent and SendToCosmosEvent both include the field _eventNonce. + // This is incremented every time one of these events is emitted. It is checked by the + // Cosmos module to ensure that all events are received in order, and that none are lost. + // + // ValsetUpdatedEvent does not include the field _eventNonce because it is never submitted to the Cosmos + // module. It is purely for the use of relayers to allow them to successfully submit batches. + event TransactionBatchExecutedEvent( + uint256 indexed _batchNonce, + address indexed _token, + uint256 _eventNonce + ); + event SendToCosmosEvent( + address indexed _tokenContract, + address indexed _sender, + bytes32 indexed _destination, + uint256 _amount, + uint256 _eventNonce + ); + event ERC20DeployedEvent( + // FYI: Can't index on a string without doing a bunch of weird stuff + string _cosmosDenom, + address indexed _tokenContract, + string _name, + string _symbol, + uint8 _decimals, + uint256 _eventNonce + ); + event ValsetUpdatedEvent( + uint256 indexed _newValsetNonce, + uint256 _eventNonce, + address[] _validators, + uint256[] _powers + ); + event LogicCallEvent( + bytes32 _invalidationId, + uint256 _invalidationNonce, + bytes _returnData, + uint256 _eventNonce + ); + + // TEST FIXTURES + // These are here to make it easier to measure gas usage. They should be removed before production + function testMakeCheckpoint( + address[] memory _validators, + uint256[] memory _powers, + uint256 _valsetNonce, + bytes32 _gravityId + ) public pure { + makeCheckpoint(_validators, _powers, _valsetNonce, _gravityId); + } + + function testCheckValidatorSignatures( + address[] memory _currentValidators, + uint256[] memory _currentPowers, + uint8[] memory _v, + bytes32[] memory _r, + bytes32[] memory _s, + bytes32 _theHash, + uint256 _powerThreshold + ) public pure { + checkValidatorSignatures( + _currentValidators, + _currentPowers, + _v, + _r, + _s, + _theHash, + _powerThreshold + ); + } + + // END TEST FIXTURES + + function lastBatchNonce(address _erc20Address) public view returns (uint256) { + return state_lastBatchNonces[_erc20Address]; + } + + function lastLogicCallNonce(bytes32 _invalidation_id) public view returns (uint256) { + return state_invalidationMapping[_invalidation_id]; + } + + // Utility function to verify geth style signatures + function verifySig( + address _signer, + bytes32 _theHash, + uint8 _v, + bytes32 _r, + bytes32 _s + ) private pure returns (bool) { + bytes32 messageDigest = + keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _theHash)); + return _signer == ecrecover(messageDigest, _v, _r, _s); + } + + // Make a new checkpoint from the supplied validator set + // A checkpoint is a hash of all relevant information about the valset. This is stored by the contract, + // instead of storing the information directly. This saves on storage and gas. + // The format of the checkpoint is: + // h(gravityId, "checkpoint", valsetNonce, validators[], powers[]) + // Where h is the keccak256 hash function. + // The validator powers must be decreasing or equal. This is important for checking the signatures on the + // next valset, since it allows the caller to stop verifying signatures once a quorum of signatures have been verified. + function makeCheckpoint( + address[] memory _validators, + uint256[] memory _powers, + uint256 _valsetNonce, + bytes32 _gravityId + ) private pure returns (bytes32) { + // bytes32 encoding of the string "checkpoint" + bytes32 methodName = 0x636865636b706f696e7400000000000000000000000000000000000000000000; + + bytes32 checkpoint = + keccak256(abi.encode(_gravityId, methodName, _valsetNonce, _validators, _powers)); + + return checkpoint; + } + + function checkValidatorSignatures( + // The current validator set and their powers + address[] memory _currentValidators, + uint256[] memory _currentPowers, + // The current validator's signatures + uint8[] memory _v, + bytes32[] memory _r, + bytes32[] memory _s, + // This is what we are checking they have signed + bytes32 _theHash, + uint256 _powerThreshold + ) private pure { + uint256 cumulativePower = 0; + + for (uint256 i = 0; i < _currentValidators.length; i++) { + // If v is set to 0, this signifies that it was not possible to get a signature from this validator and we skip evaluation + // (In a valid signature, it is either 27 or 28) + if (_v[i] != 0) { + // Check that the current validator has signed off on the hash + require( + verifySig(_currentValidators[i], _theHash, _v[i], _r[i], _s[i]), + "Validator signature does not match." + ); + + // Sum up cumulative power + cumulativePower = cumulativePower + _currentPowers[i]; + + // Break early to avoid wasting gas + if (cumulativePower > _powerThreshold) { + break; + } + } + } + + // Check that there was enough power + require( + cumulativePower > _powerThreshold, + "Submitted validator set signatures do not have enough power." + ); + // Success + } + + // This updates the valset by checking that the validators in the current valset have signed off on the + // new valset. The signatures supplied are the signatures of the current valset over the checkpoint hash + // generated from the new valset. + // Anyone can call this function, but they must supply valid signatures of state_powerThreshold of the current valset over + // the new valset. + function updateValset( + // The new version of the validator set + address[] memory _newValidators, + uint256[] memory _newPowers, + uint256 _newValsetNonce, + // The current validators that approve the change + address[] memory _currentValidators, + uint256[] memory _currentPowers, + uint256 _currentValsetNonce, + // These are arrays of the parts of the current validator's signatures + uint8[] memory _v, + bytes32[] memory _r, + bytes32[] memory _s + ) public nonReentrant { + // CHECKS + + // Check that the valset nonce is greater than the old one + require( + _newValsetNonce > _currentValsetNonce, + "New valset nonce must be greater than the current nonce" + ); + + // Check that new validators and powers set is well-formed + require(_newValidators.length == _newPowers.length, "Malformed new validator set"); + + // Check that current validators, powers, and signatures (v,r,s) set is well-formed + require( + _currentValidators.length == _currentPowers.length && + _currentValidators.length == _v.length && + _currentValidators.length == _r.length && + _currentValidators.length == _s.length, + "Malformed current validator set" + ); + + // Check that the supplied current validator set matches the saved checkpoint + require( + makeCheckpoint( + _currentValidators, + _currentPowers, + _currentValsetNonce, + state_gravityId + ) == state_lastValsetCheckpoint, + "Supplied current validators and powers do not match checkpoint." + ); + + // Check that enough current validators have signed off on the new validator set + bytes32 newCheckpoint = + makeCheckpoint(_newValidators, _newPowers, _newValsetNonce, state_gravityId); + + checkValidatorSignatures( + _currentValidators, + _currentPowers, + _v, + _r, + _s, + newCheckpoint, + state_powerThreshold + ); + + // ACTIONS + + // Stored to be used next time to validate that the valset + // supplied by the caller is correct. + state_lastValsetCheckpoint = newCheckpoint; + + // Store new nonce + state_lastValsetNonce = _newValsetNonce; + + // LOGS + state_lastEventNonce = state_lastEventNonce.add(1); + emit ValsetUpdatedEvent(_newValsetNonce, state_lastEventNonce, _newValidators, _newPowers); + } + + // submitBatch processes a batch of Cosmos -> Ethereum transactions by sending the tokens in the transactions + // to the destination addresses. It is approved by the current Cosmos validator set. + // Anyone can call this function, but they must supply valid signatures of state_powerThreshold of the current valset over + // the batch. + function submitBatch( + // The validators that approve the batch + address[] memory _currentValidators, + uint256[] memory _currentPowers, + uint256 _currentValsetNonce, + // These are arrays of the parts of the validators signatures + uint8[] memory _v, + bytes32[] memory _r, + bytes32[] memory _s, + // The batch of transactions + uint256[] memory _amounts, + address[] memory _destinations, + uint256[] memory _fees, + uint256 _batchNonce, + address _tokenContract, + // a block height beyond which this batch is not valid + // used to provide a fee-free timeout + uint256 _batchTimeout + ) public nonReentrant { + // CHECKS scoped to reduce stack depth + { + // Check that the batch nonce is higher than the last nonce for this token + require( + state_lastBatchNonces[_tokenContract] < _batchNonce, + "New batch nonce must be greater than the current nonce" + ); + + // Check that the block height is less than the timeout height + require( + block.number < _batchTimeout, + "Batch timeout must be greater than the current block height" + ); + + // Check that current validators, powers, and signatures (v,r,s) set is well-formed + require( + _currentValidators.length == _currentPowers.length && + _currentValidators.length == _v.length && + _currentValidators.length == _r.length && + _currentValidators.length == _s.length, + "Malformed current validator set" + ); + + // Check that the supplied current validator set matches the saved checkpoint + require( + makeCheckpoint( + _currentValidators, + _currentPowers, + _currentValsetNonce, + state_gravityId + ) == state_lastValsetCheckpoint, + "Supplied current validators and powers do not match checkpoint." + ); + + // Check that the transaction batch is well-formed + require( + _amounts.length == _destinations.length && _amounts.length == _fees.length, + "Malformed batch of transactions" + ); + + // Check that enough current validators have signed off on the transaction batch and valset + checkValidatorSignatures( + _currentValidators, + _currentPowers, + _v, + _r, + _s, + // Get hash of the transaction batch and checkpoint + keccak256( + abi.encode( + state_gravityId, + // bytes32 encoding of "transactionBatch" + 0x7472616e73616374696f6e426174636800000000000000000000000000000000, + _amounts, + _destinations, + _fees, + _batchNonce, + _tokenContract, + _batchTimeout + ) + ), + state_powerThreshold + ); + + // ACTIONS + + // Store batch nonce + state_lastBatchNonces[_tokenContract] = _batchNonce; + + { + // Send transaction amounts to destinations + uint256 totalFee; + for (uint256 i = 0; i < _amounts.length; i++) { + IERC20(_tokenContract).safeTransfer(_destinations[i], _amounts[i]); + totalFee = totalFee.add(_fees[i]); + } + + // Send transaction fees to msg.sender + IERC20(_tokenContract).safeTransfer(msg.sender, totalFee); + } + } + + // LOGS scoped to reduce stack depth + { + state_lastEventNonce = state_lastEventNonce.add(1); + emit TransactionBatchExecutedEvent(_batchNonce, _tokenContract, state_lastEventNonce); + } + } + + // This makes calls to contracts that execute arbitrary logic + // First, it gives the logic contract some tokens + // Then, it gives msg.senders tokens for fees + // Then, it calls an arbitrary function on the logic contract + // invalidationId and invalidationNonce are used for replay prevention. + // They can be used to implement a per-token nonce by setting the token + // address as the invalidationId and incrementing the nonce each call. + // They can be used for nonce-free replay prevention by using a different invalidationId + // for each call. + function submitLogicCall( + // The validators that approve the call + address[] memory _currentValidators, + uint256[] memory _currentPowers, + uint256 _currentValsetNonce, + // These are arrays of the parts of the validators signatures + uint8[] memory _v, + bytes32[] memory _r, + bytes32[] memory _s, + LogicCallArgs memory _args + ) public nonReentrant { + // CHECKS scoped to reduce stack depth + { + // Check that the call has not timed out + require(block.number < _args.timeOut, "Timed out"); + + // Check that the invalidation nonce is higher than the last nonce for this invalidation Id + require( + state_invalidationMapping[_args.invalidationId] < _args.invalidationNonce, + "New invalidation nonce must be greater than the current nonce" + ); + + // Check that current validators, powers, and signatures (v,r,s) set is well-formed + require( + _currentValidators.length == _currentPowers.length && + _currentValidators.length == _v.length && + _currentValidators.length == _r.length && + _currentValidators.length == _s.length, + "Malformed current validator set" + ); + + // Check that the supplied current validator set matches the saved checkpoint + require( + makeCheckpoint( + _currentValidators, + _currentPowers, + _currentValsetNonce, + state_gravityId + ) == state_lastValsetCheckpoint, + "Supplied current validators and powers do not match checkpoint." + ); + + // Check that the token transfer list is well-formed + require( + _args.transferAmounts.length == _args.transferTokenContracts.length, + "Malformed list of token transfers" + ); + + // Check that the fee list is well-formed + require( + _args.feeAmounts.length == _args.feeTokenContracts.length, + "Malformed list of fees" + ); + } + + bytes32 argsHash = + keccak256( + abi.encode( + state_gravityId, + // bytes32 encoding of "logicCall" + 0x6c6f67696343616c6c0000000000000000000000000000000000000000000000, + _args.transferAmounts, + _args.transferTokenContracts, + _args.feeAmounts, + _args.feeTokenContracts, + _args.logicContractAddress, + _args.payload, + _args.timeOut, + _args.invalidationId, + _args.invalidationNonce + ) + ); + + { + // Check that enough current validators have signed off on the transaction batch and valset + checkValidatorSignatures( + _currentValidators, + _currentPowers, + _v, + _r, + _s, + // Get hash of the transaction batch and checkpoint + argsHash, + state_powerThreshold + ); + } + + // ACTIONS + + // Update invaldiation nonce + state_invalidationMapping[_args.invalidationId] = _args.invalidationNonce; + + // Send tokens to the logic contract + for (uint256 i = 0; i < _args.transferAmounts.length; i++) { + IERC20(_args.transferTokenContracts[i]).safeTransfer( + _args.logicContractAddress, + _args.transferAmounts[i] + ); + } + + // Make call to logic contract + console.log("function call with %s", _args); + bytes memory returnData = Address.functionCall(_args.logicContractAddress, _args.payload); + + // Send fees to msg.sender + for (uint256 i = 0; i < _args.feeAmounts.length; i++) { + IERC20(_args.feeTokenContracts[i]).safeTransfer(msg.sender, _args.feeAmounts[i]); + } + + // LOGS scoped to reduce stack depth + { + state_lastEventNonce = state_lastEventNonce.add(1); + emit LogicCallEvent( + _args.invalidationId, + _args.invalidationNonce, + returnData, + state_lastEventNonce + ); + } + } + + function sendToCosmos( + address _tokenContract, + bytes32 _destination, + uint256 _amount + ) public nonReentrant { + IERC20(_tokenContract).safeTransferFrom(msg.sender, address(this), _amount); + state_lastEventNonce = state_lastEventNonce.add(1); + emit SendToCosmosEvent( + _tokenContract, + msg.sender, + _destination, + _amount, + state_lastEventNonce + ); + } + + function deployERC20( + string memory _cosmosDenom, + string memory _name, + string memory _symbol, + uint8 _decimals + ) public { + // Deploy an ERC20 with entire supply granted to Gravity.sol + CosmosERC20 erc20 = new CosmosERC20(address(this), _name, _symbol, _decimals); + + // Fire an event to let the Cosmos module know + state_lastEventNonce = state_lastEventNonce.add(1); + emit ERC20DeployedEvent( + _cosmosDenom, + address(erc20), + _name, + _symbol, + _decimals, + state_lastEventNonce + ); + } + + constructor( + // A unique identifier for this gravity instance to use in signatures + bytes32 _gravityId, + // How much voting power is needed to approve operations + uint256 _powerThreshold, + // The validator set + address[] memory _validators, + uint256[] memory _powers + ) public { + // CHECKS + + // Check that validators, powers, and signatures (v,r,s) set is well-formed + require(_validators.length == _powers.length, "Malformed current validator set"); + + // Check cumulative power to ensure the contract has sufficient power to actually + // pass a vote + uint256 cumulativePower = 0; + for (uint256 i = 0; i < _powers.length; i++) { + cumulativePower = cumulativePower + _powers[i]; + if (cumulativePower > _powerThreshold) { + break; + } + } + require( + cumulativePower > _powerThreshold, + "Submitted validator set signatures do not have enough power." + ); + + bytes32 newCheckpoint = makeCheckpoint(_validators, _powers, 0, _gravityId); + + // ACTIONS + + state_gravityId = _gravityId; + state_powerThreshold = _powerThreshold; + state_lastValsetCheckpoint = newCheckpoint; + + // LOGS + + emit ValsetUpdatedEvent(state_lastValsetNonce, state_lastEventNonce, _validators, _powers); + } +} diff --git a/integration_tests/ethereum/hardhat.config.ts b/integration_tests/ethereum/hardhat.config.ts new file mode 100644 index 00000000..3c217cfc --- /dev/null +++ b/integration_tests/ethereum/hardhat.config.ts @@ -0,0 +1,140 @@ +import '@nomiclabs/hardhat-waffle'; +import { task } from 'hardhat/config'; + +task( + 'integration_test_setup', + 'Sets up contracts for the integration test', + async (args, hre) => { + const ADDRESSES = { + CELLAR_OWNER: '0xB6C951cf962977f123bF37de42945f7ca1cd2A52', + CELLAR: '0x6ea5992aB4A78D5720bD12A089D13c073d04B55d', + GRAVITY_OWNER: '0xc6f89c23e136134cD70B8402F1165F3194953A8d', + GRAVITY: '0xFbB0BCfed0c82043A7d5387C35Ad8450b44A4cde', + WHALE: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045', + }; + + console.log('retrieving gravity contract'); + const gravitySigner = await hre.ethers.getSigner(ADDRESSES.GRAVITY_OWNER) + // Attach Gravity contract + const Gravity = hre.ethers.getContractAt( + 'Gravity', + ADDRESSES.GRAVITY, + gravitySigner + ); + const gravity = await Gravity; + console.log(`attached to gravity: ${gravity}`) + + console.log('taking over cellar owner'); + // Take over the cellar owner so we can transfer ownership + await hre.network.provider.request({ + method: 'hardhat_impersonateAccount', + params: [ADDRESSES.CELLAR_OWNER], + }); + + console.log('getting cellar signer'); + const cellarSigner = await hre.ethers.getSigner(ADDRESSES.CELLAR_OWNER); + + console.log('retrieving cellar contract'); + // Transfer ownership to gravity + const Cellar = hre.ethers.getContractAt( + 'CellarPoolShare', + ADDRESSES.CELLAR, + cellarSigner, + ); + const cellar = await Cellar; + + let { hash } = await cellar.transferOwnership(ADDRESSES.GRAVITY, { + gasPrice: hre.ethers.BigNumber.from('99916001694'), + }); + + // Send ETH to needed accounts + + console.log( + `Cellar contract at ${ADDRESSES.CELLAR} is now owned by Gravity contract at ${ADDRESSES.GRAVITY}`, + ); + console.log(`Tx hash: ${hash}`); + console.log('='.repeat(80)); + + // Take over vitalik.eth + await hre.network.provider.request({ + method: 'hardhat_impersonateAccount', + params: [ADDRESSES.WHALE], + }); + + // Send ETH to needed parties + const whaleSigner = await hre.ethers.getSigner(ADDRESSES.WHALE); + + const recipients = [ + '0xd312f0f1B39D54Db2829537595fC1167B14d4b34', + '0x7bE2a04df4b9C3227928147461e19158eB2B11d1', + '0xb8c6886FDDa38adaa0F416722dd5554886C43055', + '0x14fdAC734De10065093C4Ed4a83C41638378005A', + ]; + + for (let addr of recipients) { + await whaleSigner.sendTransaction({ + to: addr, + value: hre.ethers.utils.parseEther('100'), + }); + } + + // start the ethereum node after all setup is complete + await hre.run('node'); + }, +); + +/** + * @type import('hardhat/config').HardhatUserConfig + */ +module.exports = { + networks: { + hardhat: { + forking: { + url: 'https://mainnet.infura.io/v3/d6f22be0f7fd447186086d2495779003', + blockNumber: 13357100, + }, + }, + mainnet: { + url: 'https://mainnet.infura.io/v3/d6f22be0f7fd447186086d2495779003', + }, + }, + solidity: { + compilers: [ + { + version: '0.6.6', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + { + version: '0.7.6', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + { + version: '0.8.0', + settings: { + optimizer: { + enabled: true, + }, + }, + }, + ], + }, + // TODO: add forking configuration + typechain: { + outDir: 'typechain', + target: 'ethers-v5', + runOnCompile: true, + }, + gasReporter: { + enabled: true, + }, +}; diff --git a/integration_tests/ethereum/package.json b/integration_tests/ethereum/package.json new file mode 100644 index 00000000..2fc398c8 --- /dev/null +++ b/integration_tests/ethereum/package.json @@ -0,0 +1,30 @@ +{ + "name": "ethereum", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "npx hardhat integration_test_setup --verbose" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@nomiclabs/hardhat-ethers": "^2.0.2", + "@nomiclabs/hardhat-waffle": "^2.0.1", + "chai": "^4.3.4", + "ethereum-waffle": "^3.4.0", + "ethers": "^5.4.5", + "hardhat": "^2.6.0", + "hardhat-ethers": "^1.0.1", + "hardhat-waffle": "^0.0.1-security", + "ts-node": "^10.2.1", + "typechain": "^5.1.2", + "typechain-target-ethers-v5": "^5.0.1" + }, + "dependencies": { + "@nomiclabs/hardhat-etherscan": "^2.1.6", + "@openzeppelin/contracts": "3.1.0" + } +} diff --git a/integration_tests/ethereum/tasks.ts b/integration_tests/ethereum/tasks.ts new file mode 100644 index 00000000..eaa52978 --- /dev/null +++ b/integration_tests/ethereum/tasks.ts @@ -0,0 +1,13 @@ +import '@nomiclabs/hardhat-ethers'; +import { task } from 'hardhat/config'; +import { ethers, network } from 'hardhat'; + +import CellarArtifact from './artifacts/Cellar.json'; + +task('accounts', 'Prints the list of accounts', async (args, hre) => { + const accounts = await hre.ethers.getSigners(); + + for (const account of accounts) { + console.log(account.address); + } +}); \ No newline at end of file diff --git a/integration_tests/ethereum/tsconfig.json b/integration_tests/ethereum/tsconfig.json new file mode 100644 index 00000000..7e8d8ead --- /dev/null +++ b/integration_tests/ethereum/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "lib": [ + "es5", + "es6" + ], + "module": "commonjs", + "moduleResolution": "node", + "noImplicitAny": true, + "outDir": "dist", + "resolveJsonModule": true, + "sourceMap": true, + "strict": true, + "target": "es5" + }, + "exclude": [ + "node_modules" + ], + "include": [ + "artifacts/**/*", + "artifacts/**/*.json", + "scripts/**/*", + "tasks/**/*", + "test/**/*", + "typechain/**/*", + "types/**/*", + "hardhat.config.ts" + ] +} \ No newline at end of file diff --git a/integration_tests/ethereum/yarn.lock b/integration_tests/ethereum/yarn.lock new file mode 100644 index 00000000..de1fc2bc --- /dev/null +++ b/integration_tests/ethereum/yarn.lock @@ -0,0 +1,7822 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cspotcode/source-map-consumer@0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + +"@cspotcode/source-map-support@0.6.1": + version "0.6.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz" + integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + +"@ensdomains/ens@^0.4.4": + version "0.4.5" + resolved "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== + dependencies: + bluebird "^3.5.2" + eth-ens-namehash "^2.0.8" + solc "^0.4.20" + testrpc "0.0.1" + web3-utils "^1.0.0-beta.31" + +"@ensdomains/resolver@^0.2.4": + version "0.2.4" + resolved "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== + +"@ethereum-waffle/chai@^3.4.0": + version "3.4.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.0.tgz" + integrity sha512-GVaFKuFbFUclMkhHtQTDnWBnBQMJc/pAbfbFj/nnIK237WPLsO3KDDslA7m+MNEyTAOFrcc0CyfruAGGXAQw3g== + dependencies: + "@ethereum-waffle/provider" "^3.4.0" + ethers "^5.0.0" + +"@ethereum-waffle/compiler@^3.4.0": + version "3.4.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.0.tgz" + integrity sha512-a2wxGOoB9F1QFRE+Om7Cz2wn+pxM/o7a0a6cbwhaS2lECJgFzeN9xEkVrKahRkF4gEfXGcuORg4msP0Asxezlw== + dependencies: + "@resolver-engine/imports" "^0.3.3" + "@resolver-engine/imports-fs" "^0.3.3" + "@typechain/ethers-v5" "^2.0.0" + "@types/mkdirp" "^0.5.2" + "@types/node-fetch" "^2.5.5" + ethers "^5.0.1" + mkdirp "^0.5.1" + node-fetch "^2.6.1" + solc "^0.6.3" + ts-generator "^0.1.1" + typechain "^3.0.0" + +"@ethereum-waffle/ens@^3.3.0": + version "3.3.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.3.0.tgz" + integrity sha512-zVIH/5cQnIEgJPg1aV8+ehYicpcfuAisfrtzYh1pN3UbfeqPylFBeBaIZ7xj/xYzlJjkrek/h9VfULl6EX9Aqw== + dependencies: + "@ensdomains/ens" "^0.4.4" + "@ensdomains/resolver" "^0.2.4" + ethers "^5.0.1" + +"@ethereum-waffle/mock-contract@^3.3.0": + version "3.3.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.3.0.tgz" + integrity sha512-apwq0d+2nQxaNwsyLkE+BNMBhZ1MKGV28BtI9WjD3QD2Ztdt1q9II4sKA4VrLTUneYSmkYbJZJxw89f+OpJGyw== + dependencies: + "@ethersproject/abi" "^5.0.1" + ethers "^5.0.1" + +"@ethereum-waffle/provider@^3.4.0": + version "3.4.0" + resolved "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.0.tgz" + integrity sha512-QgseGzpwlzmaHXhqfdzthCGu5a6P1SBF955jQHf/rBkK1Y7gGo2ukt3rXgxgfg/O5eHqRU+r8xw5MzVyVaBscQ== + dependencies: + "@ethereum-waffle/ens" "^3.3.0" + ethers "^5.0.1" + ganache-core "^2.13.2" + patch-package "^6.2.2" + postinstall-postinstall "^2.1.0" + +"@ethereumjs/block@^3.4.0": + version "3.4.0" + resolved "https://registry.npmjs.org/@ethereumjs/block/-/block-3.4.0.tgz" + integrity sha512-umKAoTX32yXzErpIksPHodFc/5y8bmZMnOl6hWy5Vd8xId4+HKFUOyEiN16Y97zMwFRysRpcrR6wBejfqc6Bmg== + dependencies: + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + ethereumjs-util "^7.1.0" + merkle-patricia-tree "^4.2.0" + +"@ethereumjs/blockchain@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.4.0.tgz" + integrity sha512-wAuKLaew6PL52kH8YPXO7PbjjKV12jivRSyHQehkESw4slSLLfYA6Jv7n5YxyT2ajD7KNMPVh7oyF/MU6HcOvg== + dependencies: + "@ethereumjs/block" "^3.4.0" + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/ethash" "^1.0.0" + debug "^2.2.0" + ethereumjs-util "^7.1.0" + level-mem "^5.0.1" + lru-cache "^5.1.1" + rlp "^2.2.4" + semaphore-async-await "^1.5.1" + +"@ethereumjs/common@^2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.4.0.tgz" + integrity sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.0" + +"@ethereumjs/ethash@^1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.0.0.tgz" + integrity sha512-iIqnGG6NMKesyOxv2YctB2guOVX18qMAWlj3QlZyrc+GqfzLqoihti+cVNQnyNxr7eYuPdqwLQOFuPe6g/uKjw== + dependencies: + "@types/levelup" "^4.3.0" + buffer-xor "^2.0.1" + ethereumjs-util "^7.0.7" + miller-rabin "^4.0.0" + +"@ethereumjs/tx@^3.3.0": + version "3.3.0" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.0.tgz" + integrity sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA== + dependencies: + "@ethereumjs/common" "^2.4.0" + ethereumjs-util "^7.1.0" + +"@ethereumjs/vm@^5.5.2": + version "5.5.2" + resolved "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.5.2.tgz" + integrity sha512-AydZ4wfvZAsBuFzs3xVSA2iU0hxhL8anXco3UW3oh9maVC34kTEytOfjHf06LTEfN0MF9LDQ4ciLa7If6ZN/sg== + dependencies: + "@ethereumjs/block" "^3.4.0" + "@ethereumjs/blockchain" "^5.4.0" + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + async-eventemitter "^0.2.4" + core-js-pure "^3.0.1" + debug "^2.2.0" + ethereumjs-util "^7.1.0" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + merkle-patricia-tree "^4.2.0" + rustbn.js "~0.2.0" + util.promisify "^1.0.1" + +"@ethersproject/abi@5.0.0-beta.153": + version "5.0.0-beta.153" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz" + integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== + dependencies: + "@ethersproject/address" ">=5.0.0-beta.128" + "@ethersproject/bignumber" ">=5.0.0-beta.130" + "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/constants" ">=5.0.0-beta.128" + "@ethersproject/hash" ">=5.0.0-beta.128" + "@ethersproject/keccak256" ">=5.0.0-beta.127" + "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/properties" ">=5.0.0-beta.131" + "@ethersproject/strings" ">=5.0.0-beta.130" + +"@ethersproject/abi@5.4.0", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz" + integrity sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw== + dependencies: + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/abstract-provider@5.4.1", "@ethersproject/abstract-provider@^5.4.0": + version "5.4.1" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz" + integrity sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/networks" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/web" "^5.4.0" + +"@ethersproject/abstract-signer@5.4.1", "@ethersproject/abstract-signer@^5.4.0": + version "5.4.1" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz" + integrity sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + +"@ethersproject/address@5.4.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz" + integrity sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + +"@ethersproject/base64@5.4.0", "@ethersproject/base64@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz" + integrity sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ== + dependencies: + "@ethersproject/bytes" "^5.4.0" + +"@ethersproject/basex@5.4.0", "@ethersproject/basex@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz" + integrity sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + +"@ethersproject/bignumber@5.4.1", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.4.0": + version "5.4.1" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.1.tgz" + integrity sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + bn.js "^4.11.9" + +"@ethersproject/bytes@5.4.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz" + integrity sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA== + dependencies: + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/constants@5.4.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz" + integrity sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + +"@ethersproject/contracts@5.4.1": + version "5.4.1" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.1.tgz" + integrity sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w== + dependencies: + "@ethersproject/abi" "^5.4.0" + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + +"@ethersproject/hash@5.4.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz" + integrity sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/hdnode@5.4.0", "@ethersproject/hdnode@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz" + integrity sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/basex" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/pbkdf2" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/wordlists" "^5.4.0" + +"@ethersproject/json-wallets@5.4.0", "@ethersproject/json-wallets@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz" + integrity sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hdnode" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/pbkdf2" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz" + integrity sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A== + dependencies: + "@ethersproject/bytes" "^5.4.0" + js-sha3 "0.5.7" + +"@ethersproject/logger@5.4.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz" + integrity sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ== + +"@ethersproject/networks@5.4.2", "@ethersproject/networks@^5.4.0": + version "5.4.2" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz" + integrity sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw== + dependencies: + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/pbkdf2@5.4.0", "@ethersproject/pbkdf2@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz" + integrity sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + +"@ethersproject/properties@5.4.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz" + integrity sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A== + dependencies: + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/providers@5.4.4": + version "5.4.4" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.4.tgz" + integrity sha512-mQevyXj2X2D3l8p/JGDYFZbODhZjW6On15DnCK4Xc9y6b+P0vqorQC/j46omWSm4cyo7BQ/rgfhXNYmvAfyZoQ== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/basex" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/networks" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/web" "^5.4.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.4.0", "@ethersproject/random@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz" + integrity sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/rlp@5.4.0", "@ethersproject/rlp@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz" + integrity sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/sha2@5.4.0", "@ethersproject/sha2@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz" + integrity sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.4.0", "@ethersproject/signing-key@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz" + integrity sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz" + integrity sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/strings@5.4.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz" + integrity sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/transactions@5.4.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz" + integrity sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ== + dependencies: + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + +"@ethersproject/units@5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz" + integrity sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/wallet@5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz" + integrity sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/hdnode" "^5.4.0" + "@ethersproject/json-wallets" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/wordlists" "^5.4.0" + +"@ethersproject/web@5.4.0", "@ethersproject/web@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz" + integrity sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og== + dependencies: + "@ethersproject/base64" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/wordlists@5.4.0", "@ethersproject/wordlists@^5.4.0": + version "5.4.0" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz" + integrity sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@nomiclabs/hardhat-ethers@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.2.tgz" + integrity sha512-6quxWe8wwS4X5v3Au8q1jOvXYEPkS1Fh+cME5u6AwNdnI4uERvPlVjlgRWzpnb+Rrt1l/cEqiNRH9GlsBMSDQg== + +"@nomiclabs/hardhat-etherscan@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.6.tgz#8d1502f42adc6f7b8ef16fb917c0b5a8780cb83a" + integrity sha512-gCvT5fj8GbXS9+ACS3BzrX0pzYHHZqAHCb+NcipOkl2cy48FakUXlzrCf4P4sTH+Y7W10OgT62ezD1sJ+/NikQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^5.0.2" + debug "^4.1.1" + fs-extra "^7.0.1" + node-fetch "^2.6.0" + semver "^6.3.0" + +"@nomiclabs/hardhat-waffle@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz" + integrity sha512-2YR2V5zTiztSH9n8BYWgtv3Q+EL0N5Ltm1PAr5z20uAY4SkkfylJ98CIqt18XFvxTD5x4K2wKBzddjV9ViDAZQ== + dependencies: + "@types/sinon-chai" "^3.2.3" + "@types/web3" "1.0.19" + +"@openzeppelin/contracts@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.1.0.tgz#bcea457ef89069fbe5a617f50b25b6a8272895d5" + integrity sha512-dVXDnUKxrAKLzPdCRkz+N8qsVkK1XxJ6kk3zuI6zaQmcKxN7CkizoDP7lXxcs/Mi2I0mxceTRjJBqlzFffLJrQ== + +"@resolver-engine/core@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz" + integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== + dependencies: + debug "^3.1.0" + is-url "^1.2.4" + request "^2.85.0" + +"@resolver-engine/fs@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz" + integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== + dependencies: + "@resolver-engine/core" "^0.3.3" + debug "^3.1.0" + +"@resolver-engine/imports-fs@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz" + integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== + dependencies: + "@resolver-engine/fs" "^0.3.3" + "@resolver-engine/imports" "^0.3.3" + debug "^3.1.0" + +"@resolver-engine/imports@^0.3.3": + version "0.3.3" + resolved "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz" + integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== + dependencies: + "@resolver-engine/core" "^0.3.3" + debug "^3.1.0" + hosted-git-info "^2.6.0" + path-browserify "^1.0.0" + url "^0.11.0" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^7.1.0": + version "7.1.2" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz" + integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@solidity-parser/parser@^0.11.0": + version "0.11.1" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.11.1.tgz" + integrity sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + +"@typechain/ethers-v5@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz" + integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== + dependencies: + ethers "^5.0.2" + +"@types/abstract-leveldown@*": + version "5.0.2" + resolved "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-5.0.2.tgz" + integrity sha512-+jA1XXF3jsz+Z7FcuiNqgK53hTa/luglT2TyTpKPqoYbxVY+mCPF22Rm+q3KPBrMHJwNXFrTViHszBOfU4vftQ== + +"@types/bn.js@*", "@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== + dependencies: + "@types/node" "*" + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": + version "4.11.6" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/chai@*": + version "4.2.21" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz" + integrity sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg== + +"@types/level-errors@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz" + integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== + +"@types/levelup@^4.3.0": + version "4.3.3" + resolved "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz" + integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== + dependencies: + "@types/abstract-leveldown" "*" + "@types/level-errors" "*" + "@types/node" "*" + +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== + dependencies: + "@types/node" "*" + +"@types/node-fetch@^2.5.5": + version "2.5.12" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + +"@types/node@*": + version "16.6.2" + resolved "https://registry.npmjs.org/@types/node/-/node-16.6.2.tgz" + integrity sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA== + +"@types/node@^12.12.6": + version "12.20.19" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.19.tgz" + integrity sha512-niAuZrwrjKck4+XhoCw6AAVQBENHftpXw9F4ryk66fTgYaKQ53R4FI7c9vUGGw5vQis1HKBHDR1gcYI/Bq1xvw== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1": + version "2.3.2" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz" + integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== + +"@types/resolve@^0.0.8": + version "0.0.8" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@types/sinon-chai@^3.2.3": + version "3.2.5" + resolved "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.5.tgz" + integrity sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ== + dependencies: + "@types/chai" "*" + "@types/sinon" "*" + +"@types/sinon@*": + version "10.0.2" + resolved "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.2.tgz" + integrity sha512-BHn8Bpkapj8Wdfxvh2jWIUoaYB/9/XhsL0oOvBfRagJtKlSl9NWPcFOz2lRukI9szwGxFtYZCTejJSqsGDbdmw== + dependencies: + "@sinonjs/fake-timers" "^7.1.0" + +"@types/underscore@*": + version "1.11.3" + resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.3.tgz" + integrity sha512-Fl1TX1dapfXyDqFg2ic9M+vlXRktcPJrc4PR7sRc7sdVrjavg/JHlbUXBt8qWWqhJrmSqg3RNAkAPRiOYw6Ahw== + +"@types/web3@1.0.19": + version "1.0.19" + resolved "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz" + integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== + dependencies: + "@types/bn.js" "*" + "@types/underscore" "*" + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abstract-leveldown@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz" + integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz" + integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^6.2.1: + version "6.3.0" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz" + integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +abstract-leveldown@~2.6.0: + version "2.6.3" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz" + integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@~6.2.1: + version "6.2.3" + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-walk@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz" + integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== + +acorn@^8.4.1: + version "8.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" + integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= + +aes-js@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-back@^1.0.3, array-back@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz" + integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= + dependencies: + typical "^2.6.0" + +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== + dependencies: + typical "^2.6.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/async/-/async-2.6.2.tgz" + integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== + dependencies: + lodash "^4.17.11" + +async@^1.4.2: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: + version "2.6.3" + resolved "https://registry.npmjs.org/async/-/async-2.6.3.tgz" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.0.14, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babelify@^7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz" + integrity sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= + dependencies: + babel-core "^6.0.14" + object-assign "^4.0.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz" + integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= + dependencies: + precond "0.2" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.8" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz" + integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bignumber.js@^9.0.0, bignumber.js@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bip39@2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz" + integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +blakejs@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz" + integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + +bluebird@^3.5.0, bluebird@^3.5.2: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" + integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +body-parser@1.19.0, body-parser@^1.16.0: + version "1.19.0" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz" + integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer-xor@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz" + integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== + dependencies: + safe-buffer "^5.1.1" + +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz" + integrity sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw== + dependencies: + node-gyp-build "^4.2.0" + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +bytewise-core@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz" + integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= + dependencies: + typewise-core "^1.2" + +bytewise@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz" + integrity sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= + dependencies: + bytewise-core "^1.2.2" + typewise "^1.0.3" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cachedown@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/cachedown/-/cachedown-1.0.0.tgz" + integrity sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU= + dependencies: + abstract-leveldown "^2.4.1" + lru-cache "^3.2.0" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30000844: + version "1.0.30001251" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz" + integrity sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +cbor@^5.0.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== + dependencies: + bignumber.js "^9.0.1" + nofilter "^1.0.4" + +chai@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz" + integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz" + integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= + dependencies: + functional-red-black-tree "^1.0.1" + +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + +chokidar@^3.4.0: + version "3.5.2" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone@2.1.2, clone@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz" + integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== + dependencies: + array-back "^2.0.0" + find-replace "^1.0.3" + typical "^2.6.1" + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.1: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.5.1: + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +cookiejar@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz" + integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-pure@^3.0.1: + version "3.16.2" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.2.tgz" + integrity sha512-oxKe64UH049mJqrKkynWp6Vu0Rlm/BTXO/bJZuN2mmR3RtOFNepLlSWDd1eo16PzHpQAoNG97rLU1V/YxesJjw== + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.12" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +crc-32@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + dependencies: + exit-on-epipe "~1.0.1" + printj "~1.1.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.5" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz" + integrity sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w== + dependencies: + node-fetch "2.6.1" + whatwg-fetch "2.0.4" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.2.6: + version "3.2.6" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@4, debug@^4.1.1: + version "4.3.2" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +deferred-leveldown@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz" + integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== + dependencies: + abstract-leveldown "~2.6.0" + +deferred-leveldown@~4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz" + integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== + dependencies: + abstract-leveldown "~5.0.0" + inherits "^2.0.3" + +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== + dependencies: + abstract-leveldown "~6.2.1" + inherits "^2.0.3" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== + dependencies: + minimatch "^3.0.4" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.47: + version "1.3.812" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.812.tgz" + integrity sha512-7KiUHsKAWtSrjVoTSzxQ0nPLr/a+qoxNZwkwd9LkylTOgOXSVXkQbpIVT0WAUQcI5gXq3SwOTCrK+WfINHOXQg== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding-down@5.0.4, encoding-down@~5.0.0: + version "5.0.4" + resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz" + integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== + dependencies: + abstract-leveldown "^5.0.0" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + xtend "^4.0.1" + +encoding-down@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz" + integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== + dependencies: + abstract-leveldown "^6.2.1" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.0: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +errno@~0.1.1: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.18.0-next.2: + version "1.18.5" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz" + integrity sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eth-block-tracker@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz" + integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== + dependencies: + eth-query "^2.1.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" + +eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz" + integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-json-rpc-infura@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz" + integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== + dependencies: + cross-fetch "^2.1.1" + eth-json-rpc-middleware "^1.5.0" + json-rpc-engine "^3.4.0" + json-rpc-error "^2.0.0" + +eth-json-rpc-middleware@^1.5.0: + version "1.6.0" + resolved "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz" + integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== + dependencies: + async "^2.5.0" + eth-query "^2.1.2" + eth-tx-summary "^3.1.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.1.0" + fetch-ponyfill "^4.0.0" + json-rpc-engine "^3.6.0" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + tape "^4.6.3" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz" + integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-sig-util@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.0.tgz" + integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== + dependencies: + buffer "^5.2.1" + elliptic "^6.4.0" + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.0" + tweetnacl-util "^0.15.0" + +eth-sig-util@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz" + integrity sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= + dependencies: + ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" + ethereumjs-util "^5.1.1" + +eth-sig-util@^2.5.2: + version "2.5.4" + resolved "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.5.4.tgz" + integrity sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A== + dependencies: + ethereumjs-abi "0.6.8" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.0" + +eth-tx-summary@^3.1.2: + version "3.2.4" + resolved "https://registry.npmjs.org/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz" + integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== + dependencies: + async "^2.1.2" + clone "^2.0.0" + concat-stream "^1.5.1" + end-of-stream "^1.1.0" + eth-query "^2.0.2" + ethereumjs-block "^1.4.1" + ethereumjs-tx "^1.1.1" + ethereumjs-util "^5.0.1" + ethereumjs-vm "^2.6.0" + through2 "^2.0.3" + +ethashjs@~0.0.7: + version "0.0.8" + resolved "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.8.tgz" + integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== + dependencies: + async "^2.1.2" + buffer-xor "^2.0.1" + ethereumjs-util "^7.0.2" + miller-rabin "^4.0.0" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-common@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz" + integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== + +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz" + integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + +ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-waffle@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz" + integrity sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ== + dependencies: + "@ethereum-waffle/chai" "^3.4.0" + "@ethereum-waffle/compiler" "^3.4.0" + "@ethereum-waffle/mock-contract" "^3.3.0" + "@ethereum-waffle/provider" "^3.4.0" + ethers "^5.0.1" + +ethereumjs-abi@0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz" + integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= + dependencies: + bn.js "^4.10.0" + ethereumjs-util "^4.3.0" + +ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": + version "0.6.8" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz" + integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== + dependencies: + ethereumjs-util "^6.0.0" + rlp "^2.2.1" + safe-buffer "^5.1.1" + +ethereumjs-account@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz" + integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== + dependencies: + ethereumjs-util "^5.0.0" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.1" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: + version "1.7.1" + resolved "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz" + integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== + dependencies: + async "^2.0.1" + ethereum-common "0.2.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-blockchain@^4.0.3: + version "4.0.4" + resolved "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz" + integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== + dependencies: + async "^2.6.1" + ethashjs "~0.0.7" + ethereumjs-block "~2.2.2" + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.1.0" + flow-stoplight "^1.0.0" + level-mem "^3.0.1" + lru-cache "^5.1.1" + rlp "^2.2.2" + semaphore "^1.1.0" + +ethereumjs-common@1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz" + integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== + +ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: + version "1.3.7" + resolved "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz" + integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== + dependencies: + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" + +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^4.3.0: + version "4.5.1" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz" + integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== + dependencies: + bn.js "^4.8.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + rlp "^2.0.0" + +ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "^0.1.3" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.7, ethereumjs-util@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz" + integrity sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.4" + +ethereumjs-vm@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz" + integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + core-js-pure "^3.0.1" + ethereumjs-account "^3.0.0" + ethereumjs-block "^2.2.2" + ethereumjs-blockchain "^4.0.3" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.2" + ethereumjs-util "^6.2.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.3.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + util.promisify "^1.0.0" + +ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz" + integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.0" + ethereumjs-common "^1.1.0" + ethereumjs-util "^6.0.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.3.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + +ethereumjs-wallet@0.6.5: + version "0.6.5" + resolved "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz" + integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^6.0.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scryptsy "^1.2.1" + utf8 "^3.0.0" + uuid "^3.3.2" + +ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.2, ethers@^5.4.5: + version "5.4.5" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.4.5.tgz" + integrity sha512-PPZ6flOAj230sXEWf/r/It6ZZ5c7EOVWx+PU87Glkbg79OtT7pLE1WgL4MRdwx6iF7HzSOvUUI+8cAmcdzo12w== + dependencies: + "@ethersproject/abi" "5.4.0" + "@ethersproject/abstract-provider" "5.4.1" + "@ethersproject/abstract-signer" "5.4.1" + "@ethersproject/address" "5.4.0" + "@ethersproject/base64" "5.4.0" + "@ethersproject/basex" "5.4.0" + "@ethersproject/bignumber" "5.4.1" + "@ethersproject/bytes" "5.4.0" + "@ethersproject/constants" "5.4.0" + "@ethersproject/contracts" "5.4.1" + "@ethersproject/hash" "5.4.0" + "@ethersproject/hdnode" "5.4.0" + "@ethersproject/json-wallets" "5.4.0" + "@ethersproject/keccak256" "5.4.0" + "@ethersproject/logger" "5.4.0" + "@ethersproject/networks" "5.4.2" + "@ethersproject/pbkdf2" "5.4.0" + "@ethersproject/properties" "5.4.0" + "@ethersproject/providers" "5.4.4" + "@ethersproject/random" "5.4.0" + "@ethersproject/rlp" "5.4.0" + "@ethersproject/sha2" "5.4.0" + "@ethersproject/signing-key" "5.4.0" + "@ethersproject/solidity" "5.4.0" + "@ethersproject/strings" "5.4.0" + "@ethersproject/transactions" "5.4.0" + "@ethersproject/units" "5.4.0" + "@ethersproject/wallet" "5.4.0" + "@ethersproject/web" "5.4.0" + "@ethersproject/wordlists" "5.4.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" + integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.3: + version "0.1.6" + resolved "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +express@^4.14.0: + version "4.17.1" + resolved "https://registry.npmjs.org/express/-/express-4.17.1.tgz" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fake-merkle-patricia-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz" + integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= + dependencies: + checkpoint-store "^1.1.0" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz" + integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= + dependencies: + node-fetch "~1.7.1" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-replace@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz" + integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= + dependencies: + array-back "^1.0.4" + test-value "^2.1.0" + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-yarn-workspace-root@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== + dependencies: + fs-extra "^4.0.3" + micromatch "^3.1.4" + +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + +flat@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== + dependencies: + is-buffer "~2.0.3" + +flow-stoplight@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz" + integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= + +follow-redirects@^1.12.1: + version "1.14.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz" + integrity sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA== + +for-each@^0.3.3, for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.5.tgz" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz" + integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^4.0.2, fs-extra@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +ganache-core@^2.13.2: + version "2.13.2" + resolved "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz" + integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== + dependencies: + abstract-leveldown "3.0.0" + async "2.6.2" + bip39 "2.5.0" + cachedown "1.0.0" + clone "2.1.2" + debug "3.2.6" + encoding-down "5.0.4" + eth-sig-util "3.0.0" + ethereumjs-abi "0.6.8" + ethereumjs-account "3.0.0" + ethereumjs-block "2.2.2" + ethereumjs-common "1.5.0" + ethereumjs-tx "2.1.2" + ethereumjs-util "6.2.1" + ethereumjs-vm "4.2.0" + heap "0.2.6" + keccak "3.0.1" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.20" + lru-cache "5.1.1" + merkle-patricia-tree "3.0.0" + patch-package "6.2.2" + seedrandom "3.0.1" + source-map-support "0.5.12" + tmp "0.1.0" + web3-provider-engine "14.2.1" + websocket "1.0.32" + optionalDependencies: + ethereumjs-wallet "0.6.5" + web3 "1.2.11" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@~5.1.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.1.3: + version "7.1.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.2, glob@^7.1.3, glob@^7.1.6, glob@~7.1.7: + version "7.1.7" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + +got@9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +got@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/got/-/got-7.1.0.tgz" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.2.8" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hardhat-ethers@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hardhat-ethers/-/hardhat-ethers-1.0.1.tgz" + integrity sha512-zS7VPEwlYwIbMZG/PTDM9pF1cagmxNGxA6hLCOFQt/wYPDWgw5eUQNchi9fRbd+k6ZIgm3UypsjK60Qqlx7Ogw== + +hardhat-waffle@^0.0.1-security: + version "0.0.1-security" + resolved "https://registry.npmjs.org/hardhat-waffle/-/hardhat-waffle-0.0.1-security.tgz" + integrity sha512-r/rQUfoXmWm2fHUB3lQ3nXeazX0ZPLMOfz3dlX3NdA3pd4MIpDWKmOCL9OOLi5h9ws9gzBs7SleGiEnQVO547A== + +hardhat@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/hardhat/-/hardhat-2.6.0.tgz" + integrity sha512-NEM2pe11QXWXB7k49heOLQA9vxihG4DJ0712KjMT9NYSZgLOMcWswJ3tvn+/ND6vzLn6Z4pqr2x/kWSfllWFuw== + dependencies: + "@ethereumjs/block" "^3.4.0" + "@ethereumjs/blockchain" "^5.4.0" + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + "@ethereumjs/vm" "^5.5.2" + "@ethersproject/abi" "^5.1.2" + "@sentry/node" "^5.18.1" + "@solidity-parser/parser" "^0.11.0" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + eth-sig-util "^2.5.2" + ethereum-cryptography "^0.1.2" + ethereumjs-abi "^0.6.8" + ethereumjs-util "^7.1.0" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "^7.1.3" + https-proxy-agent "^5.0.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + lodash "^4.17.11" + merkle-patricia-tree "^4.2.0" + mnemonist "^0.38.0" + mocha "^7.1.2" + node-fetch "^2.6.0" + qs "^6.7.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + slash "^3.0.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + "true-case-path" "^2.2.1" + tsort "0.0.1" + uuid "^3.3.2" + ws "^7.4.6" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3, has@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +heap@0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz" + integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@1.7.3, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz" + integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + +immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz" + integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + +immutable@^4.0.0-rc.12: + version "4.0.0-rc.14" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.14.tgz" + integrity sha512-pfkvmRKJSoW7JFx0QeYlAmT+kNYvn5j0u7bnpNq4N2RCvHSTlLT208G8jgaquNe+Q8kCPHKOSpxJkyvLDpYq0w== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.4" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.2.0: + version "2.6.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz" + integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz" + integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" + integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.3, is-regex@~1.1.3: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-stream@^1.0.0, is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.5, is-string@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz" + integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: + version "3.8.0" + resolved "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz" + integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== + dependencies: + async "^2.0.1" + babel-preset-env "^1.7.0" + babelify "^7.3.0" + json-rpc-error "^2.0.0" + promise-to-callback "^1.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-error@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz" + integrity sha1-p6+cICg4tekFxyUOVH8a/3cligI= + dependencies: + inherits "^2.0.1" + +json-rpc-random-id@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz" + integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +keccak@3.0.1, keccak@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +level-codec@^9.0.0: + version "9.0.2" + resolved "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz" + integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== + dependencies: + buffer "^5.6.0" + +level-codec@~7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz" + integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== + +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== + +level-errors@^1.0.3: + version "1.1.2" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.1.2.tgz" + integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== + dependencies: + errno "~0.1.1" + +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== + dependencies: + errno "~0.1.1" + +level-errors@~1.0.3: + version "1.0.5" + resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz" + integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== + dependencies: + errno "~0.1.1" + +level-iterator-stream@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz" + integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.5" + xtend "^4.0.0" + +level-iterator-stream@~1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz" + integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= + dependencies: + inherits "^2.0.1" + level-errors "^1.0.3" + readable-stream "^1.0.33" + xtend "^4.0.0" + +level-iterator-stream@~3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz" + integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.3.6" + xtend "^4.0.0" + +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== + dependencies: + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" + +level-mem@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz" + integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== + dependencies: + level-packager "~4.0.0" + memdown "~3.0.0" + +level-mem@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz" + integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== + dependencies: + level-packager "^5.0.3" + memdown "^5.0.0" + +level-packager@^5.0.3: + version "5.1.1" + resolved "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz" + integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== + dependencies: + encoding-down "^6.3.0" + levelup "^4.3.2" + +level-packager@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz" + integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== + dependencies: + encoding-down "~5.0.0" + levelup "^3.0.0" + +level-post@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/level-post/-/level-post-1.0.7.tgz" + integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== + dependencies: + ltgt "^2.1.2" + +level-sublevel@6.6.4: + version "6.6.4" + resolved "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.4.tgz" + integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== + dependencies: + bytewise "~1.1.0" + level-codec "^9.0.0" + level-errors "^2.0.0" + level-iterator-stream "^2.0.3" + ltgt "~2.1.1" + pull-defer "^0.2.2" + pull-level "^2.0.3" + pull-stream "^3.6.8" + typewiselite "~1.0.0" + xtend "~4.0.0" + +level-supports@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== + dependencies: + xtend "^4.0.2" + +level-ws@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz" + integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= + dependencies: + readable-stream "~1.0.15" + xtend "~2.1.1" + +level-ws@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/level-ws/-/level-ws-1.0.0.tgz" + integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.8" + xtend "^4.0.1" + +level-ws@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz" + integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== + dependencies: + inherits "^2.0.3" + readable-stream "^3.1.0" + xtend "^4.0.1" + +levelup@3.1.1, levelup@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz" + integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== + dependencies: + deferred-leveldown "~4.0.0" + level-errors "~2.0.0" + level-iterator-stream "~3.0.0" + xtend "~4.0.0" + +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz" + integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== + dependencies: + deferred-leveldown "~1.2.1" + level-codec "~7.0.0" + level-errors "~1.0.3" + level-iterator-stream "~1.3.0" + prr "~1.0.1" + semver "~5.4.1" + xtend "~4.0.0" + +levelup@^4.3.2: + version "4.4.0" + resolved "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== + dependencies: + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz" + integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= + +lodash@4.17.20: + version "4.17.20" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +looper@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz" + integrity sha1-Zs0Md0rz1P7axTeU90LbVtqPCew= + +looper@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz" + integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@5.1.1, lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz" + integrity sha1-cXibO39Tmb7IVl3aOKow0qCX7+4= + dependencies: + pseudomap "^1.0.1" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" + integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= + +ltgt@^2.1.2, ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + +ltgt@~2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz" + integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +mcl-wasm@^0.7.1: + version "0.7.8" + resolved "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.8.tgz" + integrity sha512-qNHlYO6wuEtSoH5A8TcZfCEHtw8gGPqF6hLZpQn2SVd/Mck0ELIKOkmj072D98S9B9CI/jZybTUC96q1P2/ZDw== + dependencies: + typescript "^4.3.4" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz" + integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= + dependencies: + abstract-leveldown "~2.7.1" + functional-red-black-tree "^1.0.1" + immediate "^3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + +memdown@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz" + integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== + dependencies: + abstract-leveldown "~6.2.1" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.2.0" + +memdown@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz" + integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== + dependencies: + abstract-leveldown "~5.0.0" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merkle-patricia-tree@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz" + integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== + dependencies: + async "^2.6.1" + ethereumjs-util "^5.2.0" + level-mem "^3.0.1" + level-ws "^1.0.0" + readable-stream "^3.0.6" + rlp "^2.0.0" + semaphore ">=1.0.1" + +merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz" + integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + +merkle-patricia-tree@^4.2.0: + version "4.2.1" + resolved "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.1.tgz" + integrity sha512-25reMgrT8PhJy0Ba0U7fMZD2oobS1FPWB9vQa0uBpJYIQYYuFXEHoqEkTqA/UzX+s9br3pmUVVY/TOsFt/x0oQ== + dependencies: + "@types/levelup" "^4.3.0" + ethereumjs-util "^7.1.0" + level-mem "^5.0.1" + level-ws "^2.0.0" + readable-stream "^3.6.0" + rlp "^2.2.4" + semaphore-async-await "^1.5.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.4" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.49.0: + version "1.49.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.32" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== + dependencies: + mime-db "1.49.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + dependencies: + mkdirp "*" + +mkdirp@*, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@0.5.5, mkdirp@^0.5.1, mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mnemonist@^0.38.0: + version "0.38.3" + resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz" + integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== + dependencies: + obliterator "^1.6.1" + +mocha@^7.1.2: + version "7.2.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz" + integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + +node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-fetch@~1.7.1: + version "1.7.3" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-gyp-build@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz" + integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== + +nofilter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" + integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" + integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.0, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.11.0, object-inspect@^1.9.0, object-inspect@~1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +obliterator@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz" + integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== + +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz" + integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= + dependencies: + http-https "^1.0.0" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +open@^7.4.2: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-headers@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz" + integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +patch-package@6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.2.2.tgz" + integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^1.2.1" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + +patch-package@^6.2.2: + version "6.4.7" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz" + integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^2.0.0" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + open "^7.4.2" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + +path-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + +precond@0.2: + version "0.2.3" + resolved "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier@^2.1.2: + version "2.3.2" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz" + integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== + +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz" + integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + +proxy-addr@~2.0.5: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pull-cat@^1.1.9: + version "1.1.11" + resolved "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz" + integrity sha1-tkLdElXaN2pwa220+pYvX9t0wxs= + +pull-defer@^0.2.2: + version "0.2.3" + resolved "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz" + integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== + +pull-level@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/pull-level/-/pull-level-2.0.4.tgz" + integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== + dependencies: + level-post "^1.0.7" + pull-cat "^1.1.9" + pull-live "^1.0.1" + pull-pushable "^2.0.0" + pull-stream "^3.4.0" + pull-window "^2.1.4" + stream-to-pull-stream "^1.7.1" + +pull-live@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz" + integrity sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU= + dependencies: + pull-cat "^1.1.9" + pull-stream "^3.4.0" + +pull-pushable@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz" + integrity sha1-Xy867UethpGfAbEqLpnW8b13ZYE= + +pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: + version "3.6.14" + resolved "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.14.tgz" + integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== + +pull-window@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz" + integrity sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA= + dependencies: + looper "^2.0.0" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz" + integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@^6.7.0: + version "6.10.1" + resolved "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerate@^1.2.1: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.1" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request@^2.79.0, request@^2.85.0: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz" + integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= + +require-from-string@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.8.1, resolve@~1.20.0: + version "1.20.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz" + integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + dependencies: + through "~2.3.4" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@^2.2.8, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: + version "2.2.6" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz" + integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== + dependencies: + bn.js "^4.11.1" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +scryptsy@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz" + integrity sha1-oyJfpLJST4AnAHYeKFW987LZIWM= + dependencies: + pbkdf2 "^3.0.3" + +secp256k1@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz" + integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== + dependencies: + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +seedrandom@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz" + integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== + +semaphore-async-await@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz" + integrity sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo= + +semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@~5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz" + integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solc@^0.4.20: + version "0.4.26" + resolved "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz" + integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + +solc@^0.6.3: + version "0.6.12" + resolved "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz" + integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@0.5.12: + version "0.5.12" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.13: + version "0.5.19" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.10" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz" + integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-to-pull-stream@^1.7.1: + version "1.7.3" + resolved "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz" + integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== + dependencies: + looper "^3.0.0" + pull-stream "^3.2.3" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trim@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.4.tgz" + integrity sha512-hWCk/iqf7lp0/AgTF7/ddO1IWtSNPASjlzCicV5irAVdE1grjsneK26YG6xACMBEdCvO8fUST0UzDMh/2Qy+9Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" + integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + dependencies: + has-flag "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +tape@^4.6.3: + version "4.14.0" + resolved "https://registry.npmjs.org/tape/-/tape-4.14.0.tgz" + integrity sha512-z0+WrUUJuG6wIdWrl4W3rTte2CR26G6qcPOj3w1hfRdcmhF3kHBhOBW9VHsPVAkz08ZmGzp7phVpDupbLzrYKQ== + dependencies: + call-bind "~1.0.2" + deep-equal "~1.1.1" + defined "~1.0.0" + dotignore "~0.1.2" + for-each "~0.3.3" + glob "~7.1.7" + has "~1.0.3" + inherits "~2.0.4" + is-regex "~1.1.3" + minimist "~1.2.5" + object-inspect "~1.11.0" + resolve "~1.20.0" + resumer "~0.0.0" + string.prototype.trim "~1.2.4" + through "~2.3.8" + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +test-value@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz" + integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= + dependencies: + array-back "^1.0.3" + typical "^2.6.0" + +testrpc@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz" + integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + +through2@^2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@~2.3.4, through@~2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +tmp@0.0.33, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== + +ts-essentials@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz" + integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== + +ts-essentials@^6.0.3: + version "6.0.7" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz" + integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-generator@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/ts-generator/-/ts-generator-0.1.1.tgz" + integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== + dependencies: + "@types/mkdirp" "^0.5.2" + "@types/prettier" "^2.1.1" + "@types/resolve" "^0.0.8" + chalk "^2.4.1" + glob "^7.1.2" + mkdirp "^0.5.1" + prettier "^2.1.2" + resolve "^1.8.1" + ts-essentials "^1.0.0" + +ts-node@^10.2.1: + version "10.2.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz" + integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== + dependencies: + "@cspotcode/source-map-support" "0.6.1" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + yn "3.1.1" + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" + integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl-util@^0.15.0: + version "0.15.1" + resolved "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +tweetnacl@^1.0.0, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.5.0" + resolved "https://registry.npmjs.org/type/-/type-2.5.0.tgz" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + +typechain-target-ethers-v5@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/typechain-target-ethers-v5/-/typechain-target-ethers-v5-5.0.1.tgz" + integrity sha512-ag2fMLcXTZwtHSeDT6+QanmY7yVn3VSYBcqIGpj1A3Zp+d9Bmto5qM/eFXUsql4i9UBLgr3GVGgjkR6lz40QGQ== + +typechain@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz" + integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== + dependencies: + command-line-args "^4.0.7" + debug "^4.1.1" + fs-extra "^7.0.0" + js-sha3 "^0.8.0" + lodash "^4.17.15" + ts-essentials "^6.0.3" + ts-generator "^0.1.1" + +typechain@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/typechain/-/typechain-5.1.2.tgz" + integrity sha512-FuaCxJd7BD3ZAjVJoO+D6TnqKey3pQdsqOBsC83RKYWKli5BDhdf0TPkwfyjt20TUlZvOzJifz+lDwXsRkiSKA== + dependencies: + "@types/prettier" "^2.1.1" + command-line-args "^4.0.7" + debug "^4.1.1" + fs-extra "^7.0.0" + glob "^7.1.6" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.1.2" + ts-essentials "^7.0.1" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^4.3.4: + version "4.3.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== + +typewise-core@^1.2, typewise-core@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz" + integrity sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= + +typewise@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz" + integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= + dependencies: + typewise-core "^1.2.0" + +typewiselite@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz" + integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= + +typical@^2.6.0, typical@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz" + integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +underscore@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unorm@^1.3.3: + version "1.6.0" + resolved "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz" + integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utf-8-validate@^5.0.2: + version "5.0.5" + resolved "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz" + integrity sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ== + dependencies: + node-gyp-build "^4.2.0" + +utf8@3.0.0, utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.0, util.promisify@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + for-each "^0.3.3" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.1" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +web3-bzz@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz" + integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + +web3-core-helpers@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz" + integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.11" + web3-utils "1.2.11" + +web3-core-method@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz" + integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-utils "1.2.11" + +web3-core-promievent@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz" + integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz" + integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-providers-http "1.2.11" + web3-providers-ipc "1.2.11" + web3-providers-ws "1.2.11" + +web3-core-subscriptions@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz" + integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-core@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz" + integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-requestmanager "1.2.11" + web3-utils "1.2.11" + +web3-eth-abi@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz" + integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== + dependencies: + "@ethersproject/abi" "5.0.0-beta.153" + underscore "1.9.1" + web3-utils "1.2.11" + +web3-eth-accounts@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz" + integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-eth-contract@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz" + integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-utils "1.2.11" + +web3-eth-ens@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz" + integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-contract "1.2.11" + web3-utils "1.2.11" + +web3-eth-iban@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz" + integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== + dependencies: + bn.js "^4.11.9" + web3-utils "1.2.11" + +web3-eth-personal@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz" + integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-eth@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz" + integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== + dependencies: + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-accounts "1.2.11" + web3-eth-contract "1.2.11" + web3-eth-ens "1.2.11" + web3-eth-iban "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-net@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz" + integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-provider-engine@14.2.1: + version "14.2.1" + resolved "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz" + integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^3.0.0" + eth-json-rpc-infura "^3.1.0" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + +web3-providers-http@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz" + integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== + dependencies: + web3-core-helpers "1.2.11" + xhr2-cookies "1.1.0" + +web3-providers-ipc@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz" + integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-providers-ws@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz" + integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + websocket "^1.0.31" + +web3-shh@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz" + integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-net "1.2.11" + +web3-utils@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz" + integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@^1.0.0-beta.31: + version "1.5.2" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.2.tgz" + integrity sha512-quTtTeQJHYSxAwIBOCGEcQtqdVcFWX6mCFNoqnp+mRbq+Hxbs8CGgO/6oqfBx4OvxIOfCpgJWYVHswRXnbEu9Q== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@1.2.11: + version "1.2.11" + resolved "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz" + integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== + dependencies: + web3-bzz "1.2.11" + web3-core "1.2.11" + web3-eth "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-shh "1.2.11" + web3-utils "1.2.11" + +websocket@1.0.32: + version "1.0.32" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz" + integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +websocket@^1.0.31: + version "1.0.34" + resolved "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1.3.1, which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" + integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^5.1.1: + version "5.2.3" + resolved "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.4.6: + version "7.5.3" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz" + integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@13.1.2, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz" + integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + dependencies: + flat "^4.1.0" + lodash "^4.17.15" + yargs "^13.3.0" + +yargs@13.3.2, yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz" + integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/integration_tests/genesis.go b/integration_tests/genesis.go new file mode 100644 index 00000000..37a33fbe --- /dev/null +++ b/integration_tests/genesis.go @@ -0,0 +1,110 @@ +package integration_tests + +import ( + "encoding/json" + "fmt" + "os" + + "github.com/cosmos/cosmos-sdk/server" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/genutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + tmtypes "github.com/tendermint/tendermint/types" +) + +func getGenDoc(path string) (*tmtypes.GenesisDoc, error) { + serverCtx := server.NewDefaultContext() + config := serverCtx.Config + config.SetRoot(path) + + genFile := config.GenesisFile() + doc := &tmtypes.GenesisDoc{} + + if _, err := os.Stat(genFile); err != nil { + if !os.IsNotExist(err) { + return nil, err + } + } else { + var err error + + doc, err = tmtypes.GenesisDocFromFile(genFile) + if err != nil { + return nil, fmt.Errorf("failed to read genesis doc from file: %w", err) + } + } + + return doc, nil +} + +func addGenesisAccount(path, moniker, amountStr string, accAddr sdk.AccAddress) error { + serverCtx := server.NewDefaultContext() + config := serverCtx.Config + + config.SetRoot(path) + config.Moniker = moniker + + coins, err := sdk.ParseCoinsNormalized(amountStr) + if err != nil { + return fmt.Errorf("failed to parse coins: %w", err) + } + + balances := banktypes.Balance{Address: accAddr.String(), Coins: coins.Sort()} + genAccount := authtypes.NewBaseAccount(accAddr, nil, 0, 0) + + genFile := config.GenesisFile() + appState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genFile) + if err != nil { + return fmt.Errorf("failed to unmarshal genesis state: %w", err) + } + + authGenState := authtypes.GetGenesisStateFromAppState(cdc, appState) + + accs, err := authtypes.UnpackAccounts(authGenState.Accounts) + if err != nil { + return fmt.Errorf("failed to get accounts from any: %w", err) + } + + if accs.Contains(accAddr) { + return fmt.Errorf("failed to add account to genesis state; account already exists: %s", accAddr) + } + + // Add the new account to the set of genesis accounts and sanitize the + // accounts afterwards. + accs = append(accs, genAccount) + accs = authtypes.SanitizeGenesisAccounts(accs) + + genAccs, err := authtypes.PackAccounts(accs) + if err != nil { + return fmt.Errorf("failed to convert accounts into any's: %w", err) + } + + authGenState.Accounts = genAccs + + authGenStateBz, err := cdc.MarshalJSON(&authGenState) + if err != nil { + return fmt.Errorf("failed to marshal auth genesis state: %w", err) + } + + appState[authtypes.ModuleName] = authGenStateBz + + bankGenState := banktypes.GetGenesisStateFromAppState(cdc, appState) + bankGenState.Balances = append(bankGenState.Balances, balances) + bankGenState.Balances = banktypes.SanitizeGenesisBalances(bankGenState.Balances) + + bankGenStateBz, err := cdc.MarshalJSON(bankGenState) + if err != nil { + return fmt.Errorf("failed to marshal bank genesis state: %w", err) + } + + appState[banktypes.ModuleName] = bankGenStateBz + + appStateJSON, err := json.Marshal(appState) + if err != nil { + return fmt.Errorf("failed to marshal application genesis state: %w", err) + } + + genDoc.AppState = appStateJSON + return genutil.ExportGenesisFile(genDoc, genFile) +} diff --git a/integration_tests/gorc_bootstrap.sh b/integration_tests/gorc_bootstrap.sh new file mode 100755 index 00000000..e81f5600 --- /dev/null +++ b/integration_tests/gorc_bootstrap.sh @@ -0,0 +1,10 @@ +set -ex + +# import orchestrator Sommelier key +gorc --config=/root/gorc/config.toml keys cosmos recover orch-key "$ORCH_MNEMONIC" + +# import orchestrator Ethereum key +gorc --config=/root/gorc/config.toml keys eth import orch-eth-key $ETH_PRIV_KEY + +# start gorc orchestrator +gorc --config=/root/gorc/config.toml orchestrator start --cosmos-key=orch-key --ethereum-key=orch-eth-key diff --git a/integration_tests/io.go b/integration_tests/io.go new file mode 100644 index 00000000..a2491f5d --- /dev/null +++ b/integration_tests/io.go @@ -0,0 +1,43 @@ +package integration_tests + +import ( + "fmt" + "io" + "io/ioutil" + "os" +) + +func copyFile(src, dst string) error { + sourceFileStat, err := os.Stat(src) + if err != nil { + return err + } + + if !sourceFileStat.Mode().IsRegular() { + return fmt.Errorf("%s is not a regular file", src) + } + + source, err := os.Open(src) + if err != nil { + return err + } + defer source.Close() + + destination, err := os.Create(dst) + if err != nil { + return err + } + defer destination.Close() + + _, err = io.Copy(destination, source) + return err +} + +func writeFile(path string, body []byte) error { + _, err := os.Create(path) + if err != nil { + return err + } + + return ioutil.WriteFile(path, body, 0600) +} diff --git a/integration_tests/keys.go b/integration_tests/keys.go new file mode 100644 index 00000000..2e20fda3 --- /dev/null +++ b/integration_tests/keys.go @@ -0,0 +1,83 @@ +package integration_tests + +import ( + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/go-bip39" + "github.com/ethereum/go-ethereum/common/hexutil" + hdwallet "github.com/miguelmota/go-ethereum-hdwallet" +) + +func createMnemonic() (string, error) { + entropySeed, err := bip39.NewEntropy(256) + if err != nil { + return "", err + } + + mnemonic, err := bip39.NewMnemonic(entropySeed) + if err != nil { + return "", err + } + + return mnemonic, nil +} + +func createMemoryKeyFromMnemonic(name string, mnemonic string, passphrase string, hdPath *hd.BIP44Params) (*keyring.Info, *keyring.Keyring, error) { + kb, err := keyring.New("testnet", keyring.BackendMemory, "", nil) + if err != nil { + return nil, nil, err + } + + keyringAlgos, _ := kb.SupportedAlgorithms() + algo, err := keyring.NewSigningAlgoFromString(string(hd.Secp256k1Type), keyringAlgos) + if err != nil { + return nil, nil, err + } + + var pathString string + if hdPath == nil { + pathString = sdk.FullFundraiserPath + } else { + pathString = hdPath.String() + } + account, err := kb.NewAccount(name, mnemonic, passphrase, pathString, algo) + if err != nil { + return nil, nil, err + } + + return &account, &kb, nil +} + +func ethereumKeyFromMnemonic(mnemonic string) (*ethereumKey, error) { + wallet, err := hdwallet.NewFromMnemonic(mnemonic) + if err != nil { + return nil, err + } + + path, err := hdwallet.ParseDerivationPath(DerivationPath) + if err != nil { + return nil, err + } + + account, err := wallet.Derive(path, false) + if err != nil { + return nil, err + } + + privateKeyBytes, err := wallet.PrivateKeyBytes(account) + if err != nil { + return nil, err + } + + publicKeyBytes, err := wallet.PublicKeyBytes(account) + if err != nil { + return nil, err + } + + return ðereumKey{ + privateKey: hexutil.Encode(privateKeyBytes), + publicKey: hexutil.Encode(publicKeyBytes), + address: account.Address.String(), + }, nil +} diff --git a/integration_tests/keys_test.go b/integration_tests/keys_test.go new file mode 100644 index 00000000..cb51f219 --- /dev/null +++ b/integration_tests/keys_test.go @@ -0,0 +1,17 @@ +package integration_tests + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestEthFromMnemonic(t *testing.T) { + mnemonic := "receive roof marine sure lady hundred sea enact exist place bean wagon kingdom betray science photo loop funny bargain floor suspect only strike endless" + address := "0x14fdAC734De10065093C4Ed4a83C41638378005A" + + generatedKey, err := ethereumKeyFromMnemonic(mnemonic) + require.NoError(t, err, "error generating ethereum key") + + require.Equal(t, address, generatedKey.address) +} diff --git a/integration_tests/orchestrator.go b/integration_tests/orchestrator.go new file mode 100644 index 00000000..a191df91 --- /dev/null +++ b/integration_tests/orchestrator.go @@ -0,0 +1,18 @@ +package integration_tests + +import ( + "fmt" + + "github.com/cosmos/cosmos-sdk/crypto/keyring" +) + +type orchestrator struct { + index int + mnemonic string + keyInfo keyring.Info + keyring *keyring.Keyring +} + +func (o *orchestrator) instanceName() string { + return fmt.Sprintf("orchestrator%d", o.index) +} diff --git a/integration_tests/rebalance_test.go b/integration_tests/rebalance_test.go new file mode 100644 index 00000000..47b924e3 --- /dev/null +++ b/integration_tests/rebalance_test.go @@ -0,0 +1,326 @@ +package integration_tests + +import ( + "context" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "time" + + gravitytypes "github.com/peggyjv/gravity-bridge/module/x/gravity/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/peggyjv/sommelier/x/allocation/types" +) + +func (s *IntegrationTestSuite) TestRebalance() { + s.Run("Bring up chain, and submit a re-balance", func() { + + trs := s.getTickRanges() + s.Require().Len(trs, 3) + + commit := types.Allocation{ + Cellar: &types.Cellar{ + Id: hardhatCellar.String(), + TickRanges: []*types.TickRange{ + {Upper: 200, Lower: 100, Weight: 10}, + {Upper: 300, Lower: 200, Weight: 20}, + {Upper: 400, Lower: 300, Weight: 30}, + {Upper: 500, Lower: 400, Weight: 40}, + }, + }, + Salt: "testsalt", + } + + s.T().Logf("checking that test cellar exists in the chain") + val := s.chain.validators[0] + s.Require().Eventuallyf(func() bool { + kb, err := val.keyring() + s.Require().NoError(err) + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + s.Require().NoError(err) + + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.QueryCellars(context.Background(), &types.QueryCellarsRequest{}) + if err != nil { + return false + } + if res == nil { + return false + } + for _, c := range res.Cellars { + if c.Id == commit.Cellar.Id { + return true + } + } + return false + }, 30*time.Second, 2*time.Second, "hardhat cellar not found in chain") + + s.T().Logf("Trigger valset update via redelegation") + val = s.chain.validators[0] + s.Require().Eventuallyf(func() bool { + kb, err := val.keyring() + s.Require().NoError(err) + + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + s.Require().NoError(err) + + redelegateMsg := stakingtypes.NewMsgBeginRedelegate( + s.chain.validators[0].keyInfo.GetAddress(), + sdk.ValAddress(s.chain.validators[0].keyInfo.GetAddress()), + sdk.ValAddress(s.chain.validators[1].keyInfo.GetAddress()), + sdk.Coin{ + Denom: bondDenom, + Amount: sdk.NewInt(1073741824/2), + }, + ) + response, err := s.chain.sendMsgs(*clientCtx, redelegateMsg) + if err != nil { + s.T().Logf("error: %s", err) + return false + } + if response.Code != 0 { + if response.Code != 32 { + s.T().Log(response) + } + return false + } + + return true + }, 10*time.Second, 500*time.Millisecond, "unable to send redelegation from first node to second", ) + + + s.T().Logf("wait for new vote period start") + val = s.chain.validators[0] + s.Require().Eventuallyf(func() bool { + kb, err := val.keyring() + s.Require().NoError(err) + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + s.Require().NoError(err) + + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.QueryCommitPeriod(context.Background(), &types.QueryCommitPeriodRequest{}) + if err != nil { + return false + } + if res.VotePeriodStart != res.CurrentHeight { + if res.CurrentHeight%10 == 0 { + s.T().Logf("current height: %d, period end: %d", res.CurrentHeight, res.VotePeriodEnd) + } + return false + } + + return true + }, 105*time.Second, 1*time.Second, "new vote period never seen") + + s.T().Logf("sending pre-commits") + for i, orch := range s.chain.orchestrators { + i := i + orch := orch + s.Require().Eventuallyf(func() bool { + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", orch.keyring, "orch", orch.keyInfo.GetAddress()) + s.Require().NoError(err) + + delegatedVal := s.chain.validators[i] + + precommitMsg, err := types.NewMsgAllocationPrecommit(*commit.Cellar, commit.Salt, orch.keyInfo.GetAddress(), sdk.ValAddress(delegatedVal.keyInfo.GetAddress())) + s.Require().NoError(err, "unable to create precommit") + + response, err := s.chain.sendMsgs(*clientCtx, precommitMsg) + if err != nil { + s.T().Logf("error: %s", err) + return false + } + if response.Code != 0 { + if response.Code != 32 { + s.T().Log(response) + } + return false + } + + s.T().Logf("precommit for %d node with hash %x sent successfully", i, precommitMsg.Precommit[0].Hash) + return true + }, 10*time.Second, 500*time.Millisecond, "unable to deploy precommit for node %d", i) + } + + s.T().Logf("checking pre-commits for validators") + for i, val := range s.chain.validators { + i := i + val := val + s.Require().Eventuallyf(func() bool { + kb, err := val.keyring() + s.Require().NoError(err) + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + s.Require().NoError(err) + + queryClient := types.NewQueryClient(clientCtx) + signerVal := sdk.ValAddress(val.keyInfo.GetAddress()) + res, err := queryClient.QueryAllocationPrecommit(context.Background(), &types.QueryAllocationPrecommitRequest{ + Validator: signerVal.String(), + Cellar: hardhatCellar.String(), + }) + if err != nil { + return false + } + if res == nil { + return false + } + expectedPrecommit, err := types.NewMsgAllocationPrecommit(*commit.Cellar, commit.Salt, s.chain.orchestrators[i].keyInfo.GetAddress(), sdk.ValAddress(val.keyInfo.GetAddress())) + s.Require().NoError(err, "unable to create precommit") + s.Require().Equal(res.Precommit.CellarId, commit.Cellar.Id, "cellar ids unequal") + s.Require().Equal(res.Precommit.Hash, expectedPrecommit.Precommit[0].Hash, "commit hashes unequal") + + return true + }, + 30*time.Second, + 2*time.Second, + "pre-commit not found for validator %s", + val.keyInfo.GetAddress().String()) + } + + //kb, err := val.keyring() + + //clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + //s.Require().NoError(err) + //queryClient := types.NewQueryClient(clientCtx) + //res, err := queryClient.QueryAllocationPrecommits(context.Background(), &types.QueryAllocationPrecommitsRequest{}) + //for _, pc := range res.Precommits { + // s.T().Logf("precommit: hash %x", pc.Hash) + //} + + s.T().Logf("sending commits") + for i, orch := range s.chain.orchestrators { + i := i + orch := orch + s.Require().Eventuallyf(func() bool { + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", orch.keyring, "orch", orch.keyInfo.GetAddress()) + s.Require().NoError(err) + + commitMsg := types.NewMsgAllocationCommit([]*types.Allocation{&commit}, orch.keyInfo.GetAddress()) + response, err := s.chain.sendMsgs(*clientCtx, commitMsg) + if err != nil { + s.T().Logf("error: %s", err) + return false + } + if response.Code != 0 { + if response.Code != 32 { + s.T().Logf("response: %s", response) + s.FailNow("failing") + } + return false + } + + return true + }, 10*time.Second, 500*time.Millisecond, "unable to deploy commit for node %d", i) + } + + s.T().Logf("checking commits for validators") + for _, val := range s.chain.validators { + val := val + s.Require().Eventuallyf(func() bool { + kb, err := val.keyring() + s.Require().NoError(err) + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + s.Require().NoError(err) + + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.QueryAllocationCommit(context.Background(), &types.QueryAllocationCommitRequest{Validator: sdk.ValAddress(val.keyInfo.GetAddress()).String(), Cellar: hardhatCellar.String()}) + if err != nil { + return false + } + if res == nil { + return false + } + s.Require().Equal(res.Commit.Cellar.Id, commit.Cellar.Id, "cellar ids unequal") + + return true + }, + 30*time.Second, + 2*time.Second, + "commit not found for validator %s", + val.keyInfo.GetAddress().String()) + } + + s.T().Logf("waiting for end of vote period, endblocker to run") + val = s.chain.validators[0] + s.Require().Eventuallyf(func() bool { + kb, err := val.keyring() + s.Require().NoError(err) + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + s.Require().NoError(err) + + queryClient := types.NewQueryClient(clientCtx) + res, err := queryClient.QueryCommitPeriod(context.Background(), &types.QueryCommitPeriodRequest{}) + if err != nil { + return false + } + if res.VotePeriodStart != res.CurrentHeight { + if res.CurrentHeight%10 == 0 { + s.T().Logf("current height: %d, period end: %d", res.CurrentHeight, res.VotePeriodEnd) + } + return false + } + + return true + }, 105*time.Second, 1*time.Second, "new vote period never seen") + + s.T().Logf("checking for updated tick ranges in cellar") + s.Require().Eventuallyf(func() bool { + kb, err := val.keyring() + s.Require().NoError(err) + clientCtx, err := s.chain.clientContext("tcp://localhost:26657", &kb, "val", val.keyInfo.GetAddress()) + s.Require().NoError(err) + gravityQueryClient := gravitytypes.NewQueryClient(clientCtx) + res, err := gravityQueryClient.UnsignedContractCallTxs(context.Background(), &gravitytypes.UnsignedContractCallTxsRequest{ + Address: val.keyInfo.GetAddress().String(), + }) + if err != nil { + s.T().Logf("error: %s", err) + if res != nil { + s.T().Logf("response: %s", res) + } + } + //s.T().Logf("unsigned contract call txs: %s", res.Calls) + for _, call := range res.Calls { + s.T().Logf("contract call; nonce: %d, scope: %x, store index: %x", call.InvalidationNonce, call.InvalidationScope, call.GetStoreIndex()) + } + + confirmsRes, err := gravityQueryClient.ContractCallTxConfirmations(context.Background(), &gravitytypes.ContractCallTxConfirmationsRequest{ + InvalidationScope: commit.Cellar.ABIEncodedRebalanceBytes(), + InvalidationNonce: 1, + }) + + if err != nil { + s.T().Logf("error: %s", err) + if res != nil { + s.T().Logf("response: %s", confirmsRes) + } + } + s.T().Logf("contract call tx confirms: %s", confirmsRes.Signatures) + + trs = s.getTickRanges() + if err != nil { + s.T().Logf("error: %s", err) + return false + } + if len(trs) != 4 { + s.T().Logf("wrong length: %d", len(trs)) + return false + } + for i, tr := range trs { + if int32((i+2)*100) != tr.Upper { + s.T().Logf("wrong upper %s", tr.String()) + return false + } + if int32((i+1)*100) != tr.Lower { + s.T().Logf("wrong lower %s", tr.String()) + return false + } + if uint32((i+1)*10) != tr.Weight { + s.T().Logf("wrong weight %s", tr.String()) + return false + } + } + + return true + }, 30*time.Second, 2*time.Second, "cellar ticks never updated") + }) +} diff --git a/integration_tests/setup_test.go b/integration_tests/setup_test.go new file mode 100644 index 00000000..0f817ac0 --- /dev/null +++ b/integration_tests/setup_test.go @@ -0,0 +1,726 @@ +package integration_tests + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "math/big" + "os" + "path" + "path/filepath" + "strconv" + "strings" + "testing" + "time" + + gravitytypes "github.com/peggyjv/gravity-bridge/module/x/gravity/types" + + "github.com/ethereum/go-ethereum" + + "github.com/peggyjv/sommelier/x/allocation/types" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethclient" + + "github.com/cosmos/cosmos-sdk/server" + srvconfig "github.com/cosmos/cosmos-sdk/server/config" + sdk "github.com/cosmos/cosmos-sdk/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/ory/dockertest/v3" + "github.com/ory/dockertest/v3/docker" + "github.com/spf13/viper" + "github.com/stretchr/testify/suite" + tmconfig "github.com/tendermint/tendermint/config" + tmjson "github.com/tendermint/tendermint/libs/json" + rpchttp "github.com/tendermint/tendermint/rpc/client/http" +) + +const ( + testDenom = "testsomm" + initBalanceStr = "110000000000utestsomm,100000000000testsomm" + minGasPrice = "2" + ethChainID uint = 15 + bondDenom = "utestsomm" +) + +func MNEMONICS() []string { + return []string{ + "say monitor orient heart super local purse cricket caution primary bring insane road expect rather help two extend own execute throw nation plunge subject", + "march carpet enact kiss tribe plastic wash enter index lift topic riot try juice replace supreme original shift hover adapt mutual holiday manual nut", + "assault section bleak gadget venture ship oblige pave fabric more initial april dutch scene parade shallow educate gesture lunar match patch hawk member problem", + "receive roof marine sure lady hundred sea enact exist place bean wagon kingdom betray science photo loop funny bargain floor suspect only strike endless", + } +} + +var ( + stakeAmount, _ = sdk.NewIntFromString("100000000000") + stakeAmountCoin = sdk.NewCoin(bondDenom, stakeAmount) + hardhatCellar = common.HexToAddress("0x6ea5992aB4A78D5720bD12A089D13c073d04B55d") + gravityContract = common.HexToAddress("0xFbB0BCfed0c82043A7d5387C35Ad8450b44A4cde") +) + +type IntegrationTestSuite struct { + suite.Suite + + chain *chain + dockerPool *dockertest.Pool + dockerNetwork *dockertest.Network + ethResource *dockertest.Resource + valResources []*dockertest.Resource + orchResources []*dockertest.Resource +} + +func TestIntegrationTestSuite(t *testing.T) { + suite.Run(t, new(IntegrationTestSuite)) +} + +func (s *IntegrationTestSuite) SetupSuite() { + s.T().Log("setting up e2e integration test suite...") + + var err error + s.chain, err = newChain() + s.Require().NoError(err) + + s.T().Logf("starting e2e infrastructure; chain-id: %s; datadir: %s", s.chain.id, s.chain.dataDir) + + // initialization + mnemonics := MNEMONICS() + s.initNodesWithMnemonics(mnemonics...) + s.initEthereumFromMnemonics(mnemonics) + s.initGenesis() + s.initValidatorConfigs() + + s.dockerPool, err = dockertest.NewPool("") + s.Require().NoError(err) + + s.dockerNetwork, err = s.dockerPool.CreateNetwork(fmt.Sprintf("%s-testnet", s.chain.id)) + s.Require().NoError(err) + + // container infrastructure + s.runEthContainer() + s.runValidators() + s.runOrchestrators() +} + +func (s *IntegrationTestSuite) TearDownSuite() { + if str := os.Getenv("E2E_SKIP_CLEANUP"); len(str) > 0 { + skipCleanup, err := strconv.ParseBool(str) + s.Require().NoError(err) + + if skipCleanup { + s.T().Log("skipping teardown") + return + } + } + + s.T().Log("tearing down e2e integration test suite...") + + s.Require().NoError(os.RemoveAll(s.chain.dataDir)) + s.Require().NoError(s.dockerPool.Purge(s.ethResource)) + + for _, vc := range s.valResources { + s.Require().NoError(s.dockerPool.Purge(vc)) + } + + for _, oc := range s.orchResources { + s.Require().NoError(s.dockerPool.Purge(oc)) + } + + s.Require().NoError(s.dockerPool.RemoveNetwork(s.dockerNetwork)) +} + +func (s *IntegrationTestSuite) initNodes(nodeCount int) { + s.Require().NoError(s.chain.createAndInitValidators(nodeCount)) + s.Require().NoError(s.chain.createAndInitOrchestrators(nodeCount)) + + // initialize a genesis file for the first validator + val0ConfigDir := s.chain.validators[0].configDir() + for _, val := range s.chain.validators { + s.Require().NoError( + addGenesisAccount(val0ConfigDir, "", initBalanceStr, val.keyInfo.GetAddress()), + ) + } + + // add orchestrator accounts to genesis file + for _, orch := range s.chain.orchestrators { + s.Require().NoError( + addGenesisAccount(val0ConfigDir, "", initBalanceStr, orch.keyInfo.GetAddress()), + ) + } + + // copy the genesis file to the remaining validators + for _, val := range s.chain.validators[1:] { + err := copyFile( + filepath.Join(val0ConfigDir, "config", "genesis.json"), + filepath.Join(val.configDir(), "config", "genesis.json"), + ) + s.Require().NoError(err) + } +} + +func (s *IntegrationTestSuite) initNodesWithMnemonics(mnemonics ...string) { + s.Require().NoError(s.chain.createAndInitValidatorsWithMnemonics(mnemonics)) + s.Require().NoError(s.chain.createAndInitOrchestratorsWithMnemonics(mnemonics)) + + //initialize a genesis file for the first validator + val0ConfigDir := s.chain.validators[0].configDir() + for _, val := range s.chain.validators { + s.Require().NoError( + addGenesisAccount(val0ConfigDir, "", initBalanceStr, val.keyInfo.GetAddress()), + ) + } + + // add orchestrator accounts to genesis file + for _, orch := range s.chain.orchestrators { + s.Require().NoError( + addGenesisAccount(val0ConfigDir, "", initBalanceStr, orch.keyInfo.GetAddress()), + ) + } + + // copy the genesis file to the remaining validators + for _, val := range s.chain.validators[1:] { + err := copyFile( + filepath.Join(val0ConfigDir, "config", "genesis.json"), + filepath.Join(val.configDir(), "config", "genesis.json"), + ) + s.Require().NoError(err) + } +} + +func (s *IntegrationTestSuite) initEthereum() { + // generate ethereum keys for validators add them to the ethereum genesis + ethGenesis := EthereumGenesis{ + Difficulty: "0x400", + GasLimit: "0xB71B00", + Config: EthereumConfig{ChainID: ethChainID}, + Alloc: make(map[string]Allocation, len(s.chain.validators)+1), + } + + alloc := Allocation{ + Balance: "0x1337000000000000000000", + } + + ethGenesis.Alloc["0xBf660843528035a5A4921534E156a27e64B231fE"] = alloc + for _, val := range s.chain.validators { + s.Require().NoError(val.generateEthereumKey()) + ethGenesis.Alloc[val.ethereumKey.address] = alloc + } + + ethGenBz, err := json.MarshalIndent(ethGenesis, "", " ") + s.Require().NoError(err) + + // write out the genesis file + s.Require().NoError(writeFile(filepath.Join(s.chain.configDir(), "eth_genesis.json"), ethGenBz)) +} + +func (s *IntegrationTestSuite) initEthereumFromMnemonics(mnemonics []string) { + // generate ethereum keys for validators add them to the ethereum genesis + ethGenesis := EthereumGenesis{ + Difficulty: "0x400", + GasLimit: "0xB71B00", + Config: EthereumConfig{ChainID: ethChainID}, + Alloc: make(map[string]Allocation, len(s.chain.validators)+1), + } + + alloc := Allocation{ + Balance: "0x1337000000000000000000", + } + + ethGenesis.Alloc["0xBf660843528035a5A4921534E156a27e64B231fE"] = alloc + for i, val := range s.chain.validators { + s.Require().NoError(val.generateEthereumKeyFromMnemonic(mnemonics[i])) + ethGenesis.Alloc[val.ethereumKey.address] = alloc + } + + ethGenBz, err := json.MarshalIndent(ethGenesis, "", " ") + s.Require().NoError(err) + + // write out the genesis file + s.Require().NoError(writeFile(filepath.Join(s.chain.configDir(), "eth_genesis.json"), ethGenBz)) +} + +func (s *IntegrationTestSuite) initGenesis() { + serverCtx := server.NewDefaultContext() + config := serverCtx.Config + + config.SetRoot(s.chain.validators[0].configDir()) + config.Moniker = s.chain.validators[0].moniker + + genFilePath := config.GenesisFile() + appGenState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genFilePath) + s.Require().NoError(err) + + var bankGenState banktypes.GenesisState + s.Require().NoError(cdc.UnmarshalJSON(appGenState[banktypes.ModuleName], &bankGenState)) + + bankGenState.DenomMetadata = append(bankGenState.DenomMetadata, banktypes.Metadata{ + Description: "The native staking token of the test somm network", + Display: "testsomm", + Base: bondDenom, + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: bondDenom, + Exponent: 0, + Aliases: []string{ + "tsomm", + }, + }, + { + Denom: "testsomm", + Exponent: 6, + }, + }, + }) + bankGenState.DenomMetadata = append(bankGenState.DenomMetadata, banktypes.Metadata{ + Description: "An example stable token", + Display: testDenom, + Base: testDenom, + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: testDenom, + Exponent: 0, + }, + }, + }) + + bz, err := cdc.MarshalJSON(&bankGenState) + s.Require().NoError(err) + appGenState[banktypes.ModuleName] = bz + + // set crisis denom + var crisisGenState crisistypes.GenesisState + s.Require().NoError(cdc.UnmarshalJSON(appGenState[crisistypes.ModuleName], &crisisGenState)) + crisisGenState.ConstantFee.Denom = bondDenom + bz, err = cdc.MarshalJSON(&crisisGenState) + s.Require().NoError(err) + appGenState[crisistypes.ModuleName] = bz + + // set staking bond denom + var stakingGenState stakingtypes.GenesisState + s.Require().NoError(cdc.UnmarshalJSON(appGenState[stakingtypes.ModuleName], &stakingGenState)) + stakingGenState.Params.BondDenom = bondDenom + bz, err = cdc.MarshalJSON(&stakingGenState) + s.Require().NoError(err) + appGenState[stakingtypes.ModuleName] = bz + + // set mint denom + var mintGenState minttypes.GenesisState + s.Require().NoError(cdc.UnmarshalJSON(appGenState[minttypes.ModuleName], &mintGenState)) + mintGenState.Params.MintDenom = bondDenom + bz, err = cdc.MarshalJSON(&mintGenState) + s.Require().NoError(err) + appGenState[minttypes.ModuleName] = bz + + var genUtilGenState genutiltypes.GenesisState + s.Require().NoError(cdc.UnmarshalJSON(appGenState[genutiltypes.ModuleName], &genUtilGenState)) + + // generate genesis txs + genTxs := make([]json.RawMessage, len(s.chain.validators)) + for i, val := range s.chain.validators { + createValmsg, err := val.buildCreateValidatorMsg(stakeAmountCoin) + s.Require().NoError(err) + + delKeysMsg := val.buildDelegateKeysMsg() + s.Require().NoError(err) + + signedTx, err := val.signMsg(createValmsg, delKeysMsg) + s.Require().NoError(err) + + txRaw, err := cdc.MarshalJSON(signedTx) + s.Require().NoError(err) + + genTxs[i] = txRaw + } + + genUtilGenState.GenTxs = genTxs + + bz, err = cdc.MarshalJSON(&genUtilGenState) + s.Require().NoError(err) + appGenState[genutiltypes.ModuleName] = bz + + var allocationGenState types.GenesisState + s.Require().NoError(cdc.UnmarshalJSON(appGenState[types.ModuleName], &allocationGenState)) + + allocationGenState.Cellars = []*types.Cellar{ + { + Id: hardhatCellar.String(), + TickRanges: []*types.TickRange{ + {Upper: -189720, Lower: -192660, Weight: 160}, + {Upper: -192660, Lower: -198540, Weight: 680}, + {Upper: -198540, Lower: -201540, Weight: 160}, + }, + }, + } + allocationGenState.Params.VotePeriod = 30 + bz, err = cdc.MarshalJSON(&allocationGenState) + s.Require().NoError(err) + appGenState[types.ModuleName] = bz + + // set contract addr + var gravityGenState gravitytypes.GenesisState + s.Require().NoError(cdc.UnmarshalJSON(appGenState[gravitytypes.ModuleName], &gravityGenState)) + gravityGenState.Params.GravityId = "gravitytest" + gravityGenState.Params.BridgeEthereumAddress = gravityContract.String() + bz, err = cdc.MarshalJSON(&gravityGenState) + s.Require().NoError(err) + appGenState[gravitytypes.ModuleName] = bz + + // serialize genesis state + bz, err = json.MarshalIndent(appGenState, "", " ") + s.Require().NoError(err) + + genDoc.AppState = bz + + bz, err = tmjson.MarshalIndent(genDoc, "", " ") + s.Require().NoError(err) + + // write the updated genesis file to each validator + for _, val := range s.chain.validators { + s.Require().NoError(writeFile(filepath.Join(val.configDir(), "config", "genesis.json"), bz)) + } +} + +func (s *IntegrationTestSuite) initValidatorConfigs() { + for i, val := range s.chain.validators { + tmCfgPath := filepath.Join(val.configDir(), "config", "config.toml") + + vpr := viper.New() + vpr.SetConfigFile(tmCfgPath) + s.Require().NoError(vpr.ReadInConfig()) + + valConfig := &tmconfig.Config{} + s.Require().NoError(vpr.Unmarshal(valConfig)) + + valConfig.P2P.ListenAddress = "tcp://0.0.0.0:26656" + valConfig.P2P.AddrBookStrict = false + valConfig.P2P.ExternalAddress = fmt.Sprintf("%s:%d", val.instanceName(), 26656) + valConfig.RPC.ListenAddress = "tcp://0.0.0.0:26657" + valConfig.StateSync.Enable = false + valConfig.LogLevel = "info" + + // speed up blocks + valConfig.Consensus.TimeoutCommit = 1 * time.Second + valConfig.Consensus.TimeoutPropose = 1 * time.Second + + var peers []string + + for j := 0; j < len(s.chain.validators); j++ { + if i == j { + continue + } + + peer := s.chain.validators[j] + peerID := fmt.Sprintf("%s@%s%d:26656", peer.nodeKey.ID(), peer.moniker, j) + peers = append(peers, peerID) + } + + valConfig.P2P.PersistentPeers = strings.Join(peers, ",") + + tmconfig.WriteConfigFile(tmCfgPath, valConfig) + + // set application configuration + appCfgPath := filepath.Join(val.configDir(), "config", "app.toml") + + appConfig := srvconfig.DefaultConfig() + appConfig.API.Enable = true + appConfig.Pruning = "nothing" + appConfig.MinGasPrices = fmt.Sprintf("%s%s", minGasPrice, testDenom) + + srvconfig.WriteConfigFile(appCfgPath, appConfig) + } +} + +func (s *IntegrationTestSuite) runHardhatContainer() { + s.T().Log("starting Ethereum Hardhat container...") + +} + +func (s *IntegrationTestSuite) runEthContainer() { + s.T().Log("starting Ethereum container...") + var err error + + runOpts := dockertest.RunOptions{ + Name: "ethereum", + Repository: "ethereum", + Tag: "prebuilt", + NetworkID: s.dockerNetwork.Network.ID, + PortBindings: map[docker.Port][]docker.PortBinding{ + "8545/tcp": {{HostIP: "", HostPort: "8545"}}, + }, + ExposedPorts: []string{"8545/tcp"}, + } + + s.ethResource, err = s.dockerPool.RunWithOptions( + &runOpts, + noRestart, + ) + s.Require().NoError(err) + + ethClient, err := ethclient.Dial(fmt.Sprintf("http://%s", s.ethResource.GetHostPort("8545/tcp"))) + s.Require().NoError(err) + + // Wait for the Ethereum node to respond to a request + s.Require().Eventually( + func() bool { + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + + balance, err := ethClient.BalanceAt(ctx, common.HexToAddress("0xd312f0f1B39D54Db2829537595fC1167B14d4b34"), nil) + if err != nil { + return false + } + + if balance == nil || (balance.Cmp(big.NewInt(0)) == 0) { + return false + } + + return true + }, + 5*time.Minute, + 10*time.Second, + "ethereum node failed to respond", + ) + + s.T().Logf("started Ethereum container: %s", s.ethResource.Container.ID) +} + +func (s *IntegrationTestSuite) runValidators() { + s.T().Log("starting validator containers...") + + s.valResources = make([]*dockertest.Resource, len(s.chain.validators)) + for i, val := range s.chain.validators { + runOpts := &dockertest.RunOptions{ + Name: val.instanceName(), + NetworkID: s.dockerNetwork.Network.ID, + Repository: "sommelier", + Tag: "prebuilt", + Mounts: []string{ + fmt.Sprintf("%s/:/root/.sommelier", val.configDir()), + }, + Entrypoint: []string{"sommelier", "start", "--trace=true"}, + } + + // expose the first validator for debugging and communication + if val.index == 0 { + runOpts.PortBindings = map[docker.Port][]docker.PortBinding{ + "1317/tcp": {{HostIP: "", HostPort: "1317"}}, + "9090/tcp": {{HostIP: "", HostPort: "9090"}}, + "26656/tcp": {{HostIP: "", HostPort: "26656"}}, + "26657/tcp": {{HostIP: "", HostPort: "26657"}}, + } + runOpts.ExposedPorts = []string{"1317/tcp", "9090/tcp", "26656/tcp", "26657/tcp"} + } + + resource, err := s.dockerPool.RunWithOptions(runOpts, noRestart) + s.Require().NoError(err) + + s.valResources[i] = resource + s.T().Logf("started validator container: %s", resource.Container.ID) + } + + rpcClient, err := rpchttp.New("tcp://localhost:26657", "/websocket") + s.Require().NoError(err) + + s.Require().Eventually( + func() bool { + status, err := rpcClient.Status(context.Background()) + if err != nil { + s.T().Logf("can't get container status: %s", err.Error()) + } + if status == nil { + container, ok := s.dockerPool.ContainerByName("sommelier0") + if !ok { + s.T().Logf("no container by 'sommelier0'") + } else { + if container.Container.State.Status == "exited" { + s.Fail("validators exited", "state: %s logs: \n%s", container.Container.State.String(), s.logsByContainerID(container.Container.ID)) + s.T().FailNow() + } + s.T().Logf("state: %v, health: %v", container.Container.State.Status, container.Container.State.Health) + } + return false + } + + // let the node produce a few blocks + if status.SyncInfo.CatchingUp { + s.T().Logf("catching up: %t", status.SyncInfo.CatchingUp) + return false + } + if status.SyncInfo.LatestBlockHeight < 2 { + s.T().Logf("block height %d", status.SyncInfo.LatestBlockHeight) + return false + } + + return true + }, + 10*time.Minute, + 15*time.Second, + "validator node failed to produce blocks", + ) +} + +func (s *IntegrationTestSuite) runOrchestrators() { + s.T().Log("starting orchestrator containers...") + + s.orchResources = make([]*dockertest.Resource, len(s.chain.orchestrators)) + for i, orch := range s.chain.orchestrators { + gorcCfg := fmt.Sprintf(`keystore = "/root/gorc/keystore/" + +[gravity] +contract = "%s" +fees_denom = "%s" + +[ethereum] +key_derivation_path = "m/44'/60'/0'/0/0" +rpc = "http://%s:8545" + +[cosmos] +key_derivation_path = "m/44'/118'/1'/0/0" +grpc = "http://%s:9090" +gas_price = { amount = %s, denom = "%s" } +prefix = "somm" +`, + gravityContract.String(), + testDenom, + // NOTE: container names are prefixed with '/' + s.ethResource.Container.Name[1:], + s.valResources[i].Container.Name[1:], + minGasPrice, + testDenom, + ) + + val := s.chain.validators[i] + + gorcCfgPath := path.Join(val.configDir(), "gorc") + s.Require().NoError(os.MkdirAll(gorcCfgPath, 0755)) + + filePath := path.Join(gorcCfgPath, "config.toml") + s.Require().NoError(writeFile(filePath, []byte(gorcCfg))) + + // We must first populate the orchestrator's keystore prior to starting + // the orchestrator gorc process. The keystore must contain the Ethereum + // and orchestrator keys. These keys will be used for relaying txs to + // and from Somm and Ethereum. The gorc_bootstrap.sh scripts encapsulates + // this entire process. + // + // NOTE: If the Docker build changes, the script might have to be modified + // as it relies on busybox. + err := copyFile( + filepath.Join("integration_tests", "gorc_bootstrap.sh"), + filepath.Join(gorcCfgPath, "gorc_bootstrap.sh"), + ) + s.Require().NoError(err) + + resource, err := s.dockerPool.RunWithOptions( + &dockertest.RunOptions{ + Name: orch.instanceName(), + NetworkID: s.dockerNetwork.Network.ID, + Repository: "orchestrator", + Tag: "prebuilt", + Mounts: []string{ + fmt.Sprintf("%s/:/root/gorc", gorcCfgPath), + }, + Env: []string{ + fmt.Sprintf("ORCH_MNEMONIC=%s", orch.mnemonic), + fmt.Sprintf("ETH_PRIV_KEY=%s", val.ethereumKey.privateKey), + "RUST_BACKTRACE=full", + "RUST_LOG=debug", + }, + Entrypoint: []string{ + "sh", + "-c", + "chmod +x /root/gorc/gorc_bootstrap.sh && /root/gorc/gorc_bootstrap.sh", + }, + }, + noRestart, + ) + s.Require().NoError(err) + + s.orchResources[i] = resource + s.T().Logf("started orchestrator container: %s", resource.Container.ID) + } + + // TODO(mvid) Determine if there is a way to check the health or status of + // the gorc orchestrator processes. For now, we search the logs to determine + // when each orchestrator resource has synced all batches + match := "orchestrator::main_loop: No unsigned batches! Everything good!" + for _, resource := range s.orchResources { + resource := resource + s.T().Logf("waiting for orchestrator to be healthy: %s", resource.Container.ID) + + s.Require().Eventuallyf( + func() bool { + var containerLogsBuf bytes.Buffer + s.Require().NoError(s.dockerPool.Client.Logs( + docker.LogsOptions{ + Container: resource.Container.ID, + OutputStream: &containerLogsBuf, + Stdout: true, + Stderr: true, + }, + )) + + return strings.Contains(containerLogsBuf.String(), match) + }, + 30*time.Second, + 2*time.Second, + "orchestrator %s not healthy", + resource.Container.ID, + ) + } +} + +func noRestart(config *docker.HostConfig) { + // in this case we don't want the nodes to restart on failure + config.RestartPolicy = docker.RestartPolicy{ + Name: "no", + } +} + +func (s *IntegrationTestSuite) logsByContainerID(id string) string { + var containerLogsBuf bytes.Buffer + s.Require().NoError(s.dockerPool.Client.Logs( + docker.LogsOptions{ + Container: id, + OutputStream: &containerLogsBuf, + Stdout: true, + Stderr: true, + }, + )) + + return containerLogsBuf.String() +} + +func (s *IntegrationTestSuite) getTickRanges() []types.TickRange { + ethClient, err := ethclient.Dial(fmt.Sprintf("http://%s", s.ethResource.GetHostPort("8545/tcp"))) + s.Require().NoError(err) + + tickRanges := make([]types.TickRange, 3) + for i := 0; i < 3; i++ { + bz, err := ethClient.CallContract(context.Background(), ethereum.CallMsg{ + From: common.HexToAddress(s.chain.validators[0].ethereumKey.address), + To: &hardhatCellar, + Gas: 0, + Data: types.ABIEncodedCellarTickInfoBytes(uint(i)), + }, nil) + s.Require().NoError(err) + + tr, err := types.BytesToABIEncodedTickRange(bz) + s.Require().NoError(err) + + tickRanges[i] = *tr + } + + return tickRanges +} + +func (s *IntegrationTestSuite) TestBasicChain() { + // this test verifies that the setup functions all operate as expected + s.Run("bring up basic chain", func() { + }) +} diff --git a/integration_tests/util.go b/integration_tests/util.go new file mode 100644 index 00000000..70589a3f --- /dev/null +++ b/integration_tests/util.go @@ -0,0 +1,47 @@ +package integration_tests + +import ( + "fmt" + + "github.com/cosmos/cosmos-sdk/codec/unknownproto" + sdktx "github.com/cosmos/cosmos-sdk/types/tx" +) + +const DerivationPath = "m/44'/60'/0'/0/0" + +func decodeTx(txBytes []byte) (*sdktx.Tx, error) { + var raw sdktx.TxRaw + + // reject all unknown proto fields in the root TxRaw + err := unknownproto.RejectUnknownFieldsStrict(txBytes, &raw, encodingConfig.InterfaceRegistry) + if err != nil { + return nil, fmt.Errorf("failed to reject unknown fields: %w", err) + } + + if err := cdc.Unmarshal(txBytes, &raw); err != nil { + return nil, err + } + + var body sdktx.TxBody + if err := cdc.Unmarshal(raw.BodyBytes, &body); err != nil { + return nil, fmt.Errorf("failed to decode tx: %w", err) + } + + var authInfo sdktx.AuthInfo + + // reject all unknown proto fields in AuthInfo + err = unknownproto.RejectUnknownFieldsStrict(raw.AuthInfoBytes, &authInfo, encodingConfig.InterfaceRegistry) + if err != nil { + return nil, fmt.Errorf("failed to reject unknown fields: %w", err) + } + + if err := cdc.Unmarshal(raw.AuthInfoBytes, &authInfo); err != nil { + return nil, fmt.Errorf("failed to decode auth info: %w", err) + } + + return &sdktx.Tx{ + Body: &body, + AuthInfo: &authInfo, + Signatures: raw.Signatures, + }, nil +} diff --git a/integration_tests/validator.go b/integration_tests/validator.go new file mode 100644 index 00000000..4fc5f323 --- /dev/null +++ b/integration_tests/validator.go @@ -0,0 +1,355 @@ +package integration_tests + +import ( + "crypto/ecdsa" + "encoding/json" + "fmt" + "os" + "path" + "path/filepath" + + "github.com/cosmos/cosmos-sdk/client" + + sdkcrypto "github.com/cosmos/cosmos-sdk/crypto" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/server" + sdk "github.com/cosmos/cosmos-sdk/types" + sdktx "github.com/cosmos/cosmos-sdk/types/tx" + txsigning "github.com/cosmos/cosmos-sdk/types/tx/signing" + authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" + "github.com/cosmos/cosmos-sdk/x/genutil" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" + gravitytypes "github.com/peggyjv/gravity-bridge/module/x/gravity/types" + "github.com/peggyjv/sommelier/app" + tmcfg "github.com/tendermint/tendermint/config" + tmos "github.com/tendermint/tendermint/libs/os" + "github.com/tendermint/tendermint/p2p" + "github.com/tendermint/tendermint/privval" +) + +type validator struct { + chain *chain + index int + moniker string + mnemonic string + keyInfo keyring.Info + privateKey cryptotypes.PrivKey + consensusKey privval.FilePVKey + consensusPrivKey cryptotypes.PrivKey + nodeKey p2p.NodeKey + ethereumKey ethereumKey +} + +type ethereumKey struct { + publicKey string + privateKey string + address string +} + +func (v *validator) instanceName() string { + return fmt.Sprintf("%s%d", v.moniker, v.index) +} + +func (v *validator) configDir() string { + return fmt.Sprintf("%s/%s", v.chain.configDir(), v.instanceName()) +} + +func (v *validator) createConfig() error { + p := path.Join(v.configDir(), "config") + return os.MkdirAll(p, 0755) +} + +func (v *validator) init() error { + if err := v.createConfig(); err != nil { + return err + } + + serverCtx := server.NewDefaultContext() + config := serverCtx.Config + + config.SetRoot(v.configDir()) + config.Moniker = v.moniker + + genDoc, err := getGenDoc(v.configDir()) + if err != nil { + return err + } + + appState, err := json.MarshalIndent(app.ModuleBasics.DefaultGenesis(cdc), "", " ") + if err != nil { + return fmt.Errorf("failed to JSON encode app genesis state: %w", err) + } + + genDoc.ChainID = v.chain.id + genDoc.Validators = nil + genDoc.AppState = appState + + if err = genutil.ExportGenesisFile(genDoc, config.GenesisFile()); err != nil { + return fmt.Errorf("failed to export app genesis state: %w", err) + } + + tmcfg.WriteConfigFile(filepath.Join(config.RootDir, "config", "config.toml"), config) + return nil +} + +func (v *validator) createNodeKey() error { + serverCtx := server.NewDefaultContext() + config := serverCtx.Config + + config.SetRoot(v.configDir()) + config.Moniker = v.moniker + + nodeKey, err := p2p.LoadOrGenNodeKey(config.NodeKeyFile()) + if err != nil { + return err + } + + v.nodeKey = *nodeKey + return nil +} + +func (v *validator) createConsensusKey() error { + serverCtx := server.NewDefaultContext() + config := serverCtx.Config + + config.SetRoot(v.configDir()) + config.Moniker = v.moniker + + pvKeyFile := config.PrivValidatorKeyFile() + if err := tmos.EnsureDir(filepath.Dir(pvKeyFile), 0777); err != nil { + return err + } + + pvStateFile := config.PrivValidatorStateFile() + if err := tmos.EnsureDir(filepath.Dir(pvStateFile), 0777); err != nil { + return err + } + + filePV := privval.LoadOrGenFilePV(pvKeyFile, pvStateFile) + v.consensusKey = filePV.Key + + return nil +} + +func (v *validator) createKeyFromMnemonic(name, mnemonic string, passphrase string) error { + kb, err := keyring.New(keyringAppName, keyring.BackendTest, v.configDir(), nil) + if err != nil { + return err + } + + keyringAlgos, _ := kb.SupportedAlgorithms() + algo, err := keyring.NewSigningAlgoFromString(string(hd.Secp256k1Type), keyringAlgos) + if err != nil { + return err + } + + info, err := kb.NewAccount(name, mnemonic, passphrase, sdk.FullFundraiserPath, algo) + if err != nil { + return err + } + + privKeyArmor, err := kb.ExportPrivKeyArmor(name, keyringPassphrase) + if err != nil { + return err + } + + privKey, _, err := sdkcrypto.UnarmorDecryptPrivKey(privKeyArmor, keyringPassphrase) + if err != nil { + return err + } + + v.keyInfo = info + v.mnemonic = mnemonic + v.privateKey = privKey + + return nil +} + +func (v *validator) createKey(name string) error { + mnemonic, err := createMnemonic() + if err != nil { + return err + } + + return v.createKeyFromMnemonic(name, mnemonic, "") +} + +func (v *validator) generateEthereumKey() error { + privateKey, err := crypto.GenerateKey() + if err != nil { + return err + } + + privateKeyBytes := crypto.FromECDSA(privateKey) + + publicKey := privateKey.Public() + publicKeyECDSA, ok := publicKey.(*ecdsa.PublicKey) + if !ok { + return fmt.Errorf("unexpected public key type; expected: %T, got: %T", &ecdsa.PublicKey{}, publicKey) + } + + publicKeyBytes := crypto.FromECDSAPub(publicKeyECDSA) + v.ethereumKey = ethereumKey{ + privateKey: hexutil.Encode(privateKeyBytes), + publicKey: hexutil.Encode(publicKeyBytes), + address: crypto.PubkeyToAddress(*publicKeyECDSA).Hex(), + } + + return nil +} + +func (v *validator) generateEthereumKeyFromMnemonic(mnemonic string) error { + ethKey, err := ethereumKeyFromMnemonic(mnemonic) + if err != nil { + return err + } + v.ethereumKey = *ethKey + return nil +} + +func (v *validator) buildCreateValidatorMsg(amount sdk.Coin) (sdk.Msg, error) { + description := stakingtypes.NewDescription(v.moniker, "", "", "", "") + commissionRates := stakingtypes.CommissionRates{ + Rate: sdk.MustNewDecFromStr("0.1"), + MaxRate: sdk.MustNewDecFromStr("0.2"), + MaxChangeRate: sdk.MustNewDecFromStr("0.01"), + } + + // get the initial validator min self delegation + minSelfDelegation, _ := sdk.NewIntFromString("1") + + valPubKey, err := cryptocodec.FromTmPubKeyInterface(v.consensusKey.PubKey) + if err != nil { + return nil, err + } + + return stakingtypes.NewMsgCreateValidator( + sdk.ValAddress(v.keyInfo.GetAddress()), + valPubKey, + amount, + description, + commissionRates, + minSelfDelegation, + ) +} + +func (v *validator) buildDelegateKeysMsg() sdk.Msg { + privKeyBz, err := hexutil.Decode(v.ethereumKey.privateKey) + if err != nil { + panic(fmt.Sprintf("failed to HEX decode private key: %s", err)) + } + + privKey, err := crypto.ToECDSA(privKeyBz) + if err != nil { + panic(fmt.Sprintf("failed to convert private key: %s", err)) + } + + signMsg := gravitytypes.DelegateKeysSignMsg{ + ValidatorAddress: sdk.ValAddress(v.keyInfo.GetAddress()).String(), + Nonce: 0, + } + + signMsgBz := cdc.MustMarshal(&signMsg) + hash := crypto.Keccak256Hash(signMsgBz).Bytes() + ethSig, err := gravitytypes.NewEthereumSignature(hash, privKey) + if err != nil { + panic(fmt.Sprintf("failed to create Ethereum signature: %s", err)) + } + + return gravitytypes.NewMsgDelegateKeys( + sdk.ValAddress(v.keyInfo.GetAddress()), + v.chain.orchestrators[v.index].keyInfo.GetAddress(), + v.ethereumKey.address, + ethSig, + ) +} + +func (v *validator) signMsg(msgs ...sdk.Msg) (*sdktx.Tx, error) { + txBuilder := encodingConfig.TxConfig.NewTxBuilder() + + if err := txBuilder.SetMsgs(msgs...); err != nil { + return nil, err + } + + txBuilder.SetMemo(fmt.Sprintf("%s@%s:26656", v.nodeKey.ID(), v.instanceName())) + txBuilder.SetFeeAmount(sdk.NewCoins()) + txBuilder.SetGasLimit(200000) + + signerData := authsigning.SignerData{ + ChainID: v.chain.id, + AccountNumber: 0, + Sequence: 0, + } + + // For SIGN_MODE_DIRECT, calling SetSignatures calls setSignerInfos on + // TxBuilder under the hood, and SignerInfos is needed to generate the sign + // bytes. This is the reason for setting SetSignatures here, with a nil + // signature. + // + // Note: This line is not needed for SIGN_MODE_LEGACY_AMINO, but putting it + // also doesn't affect its generated sign bytes, so for code's simplicity + // sake, we put it here. + sig := txsigning.SignatureV2{ + PubKey: v.keyInfo.GetPubKey(), + Data: &txsigning.SingleSignatureData{ + SignMode: txsigning.SignMode_SIGN_MODE_DIRECT, + Signature: nil, + }, + Sequence: 0, + } + + if err := txBuilder.SetSignatures(sig); err != nil { + return nil, err + } + + bytesToSign, err := encodingConfig.TxConfig.SignModeHandler().GetSignBytes( + txsigning.SignMode_SIGN_MODE_DIRECT, + signerData, + txBuilder.GetTx(), + ) + if err != nil { + return nil, err + } + + sigBytes, err := v.privateKey.Sign(bytesToSign) + if err != nil { + return nil, err + } + + sig = txsigning.SignatureV2{ + PubKey: v.keyInfo.GetPubKey(), + Data: &txsigning.SingleSignatureData{ + SignMode: txsigning.SignMode_SIGN_MODE_DIRECT, + Signature: sigBytes, + }, + Sequence: 0, + } + if err := txBuilder.SetSignatures(sig); err != nil { + return nil, err + } + + signedTx := txBuilder.GetTx() + bz, err := encodingConfig.TxConfig.TxEncoder()(signedTx) + if err != nil { + return nil, err + } + + return decodeTx(bz) +} + +func (v *validator) keyring() (keyring.Keyring, error) { + return keyring.New(keyringAppName, keyring.BackendTest, v.configDir(), nil) +} + +func (v *validator) clientContext(nodeURI string) (*client.Context, error) { + kb, err := v.keyring() + if err != nil { + return nil, err + } + return v.chain.clientContext(nodeURI, &kb, "val", v.keyInfo.GetAddress()) +} diff --git a/proto/allocation/v1/allocation.proto b/proto/allocation/v1/allocation.proto index adaf1e85..6042d357 100644 --- a/proto/allocation/v1/allocation.proto +++ b/proto/allocation/v1/allocation.proto @@ -8,7 +8,8 @@ option go_package = "github.com/peggyjv/sommelier/x/allocation/types"; // AllocationPrecommit defines an array of hashed data to be used for the precommit phase // of allocation message AllocationPrecommit { - bytes hash = 1 [(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes"]; +// bytes hash = 1 [(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes"]; + bytes hash = 1; string cellar_id = 2; } @@ -25,9 +26,9 @@ message Cellar { } message TickRange { - uint64 upper = 1; - uint64 lower = 2; - uint64 weight = 3; + int32 upper = 1; + int32 lower = 2; + uint32 weight = 3; } message CellarUpdate { diff --git a/proto/allocation/v1/genesis.proto b/proto/allocation/v1/genesis.proto index 59358efe..7345fb3d 100644 --- a/proto/allocation/v1/genesis.proto +++ b/proto/allocation/v1/genesis.proto @@ -13,9 +13,7 @@ message GenesisState { Params params = 1 [ (gogoproto.nullable) = false ]; - repeated MsgDelegateAllocations feeder_delegations = 2 [ - (gogoproto.nullable) = false - ]; + repeated Cellar cellars = 2; } // Params allocation parameters diff --git a/proto/allocation/v1/query.proto b/proto/allocation/v1/query.proto index 0a6601f3..58f541d2 100644 --- a/proto/allocation/v1/query.proto +++ b/proto/allocation/v1/query.proto @@ -16,26 +16,30 @@ service Query { rpc QueryParams(QueryParamsRequest) returns (QueryParamsResponse) { option (google.api.http).get = "/sommelier/allocation/v1/params"; } - // QueryDelegateAddress queries the delegate account address of a validator - rpc QueryDelegateAddress(QueryDelegateAddressRequest) returns (QueryDelegateAddressResponse) { - option (google.api.http).get = "/sommelier/allocation/v1/delegates/{validator}"; - } - // QueryValidatorAddress returns the validator address of a given delegate - rpc QueryValidatorAddress(QueryValidatorAddressRequest) returns (QueryValidatorAddressResponse) { - option (google.api.http).get = "/sommelier/allocation/v1/validators/{delegate}"; - } // QueryAllocationPrecommit queries the validator prevote in the current voting period rpc QueryAllocationPrecommit(QueryAllocationPrecommitRequest) returns (QueryAllocationPrecommitResponse) { - option (google.api.http).get = "/sommelier/allocation/v1/precommits/{validator}"; + option (google.api.http).get = "/sommelier/allocation/v1/precommits/{validator}/{cellar}"; + } + // QueryAllocationPrecommits queries all allocation precommits in the voting period + rpc QueryAllocationPrecommits(QueryAllocationPrecommitsRequest) returns (QueryAllocationPrecommitsResponse) { + option (google.api.http).get = "/sommelier/allocation/v1/precommits"; } // QueryAllocationCommit queries the validator vote in the current voting period rpc QueryAllocationCommit(QueryAllocationCommitRequest) returns (QueryAllocationCommitResponse) { - option (google.api.http).get = "/sommelier/allocation/v1/commits/{validator}"; + option (google.api.http).get = "/sommelier/allocation/v1/commits/{validator}/{cellar}"; + } + // QueryAllocationCommits queries all validator allocation commits + rpc QueryAllocationCommits(QueryAllocationCommitsRequest) returns (QueryAllocationCommitsResponse) { + option (google.api.http).get = "/sommelier/allocation/v1/commits"; } // QueryVotePeriod queries the heights for the current voting period (current, start and end) rpc QueryCommitPeriod(QueryCommitPeriodRequest) returns (QueryCommitPeriodResponse) { option (google.api.http).get = "/sommelier/allocation/v1/commit_period"; } + // QueryCellars returns all cellars and current tick ranges + rpc QueryCellars(QueryCellarsRequest) returns (QueryCellarsResponse) { + option (google.api.http).get = "/sommelier/allocation/v1/cellars"; + } } // QueryParamsRequest is the request type for the Query/Params gRPC method. @@ -47,30 +51,6 @@ message QueryParamsResponse { Params params = 1 [(gogoproto.nullable) = false]; } -// QueryDelegateAddressRequest is the request type for the Query/QueryDelegateAddress gRPC method. -message QueryDelegateAddressRequest { - // validator operator address - string validator = 1; -} - -// QueryDelegateAddressResponse is the response type for the Query/QueryDelegateAddress gRPC method. -message QueryDelegateAddressResponse { - // delegate account address - string delegate = 2; -} - -// QueryValidatorAddressRequest is the request type for the Query/Params gRPC method. -message QueryValidatorAddressRequest { - // delegate account address - string delegate = 1; -} - -// QueryValidatorAddressResponse is the response type for the Query/Params gRPC method. -message QueryValidatorAddressResponse { - // validator operator address - string validator = 1; -} - // QueryAllocationPrecommitRequest is the request type for the Query/AllocationPrecommit gRPC method. message QueryAllocationPrecommitRequest { // validator operator address @@ -79,12 +59,21 @@ message QueryAllocationPrecommitRequest { string cellar = 2; } -// QueryAllocationPrecommitResponse is the response type for the Query/QueryallocationDataPrevote gRPC method. +// QueryAllocationPrecommitResponse is the response type for the Query/AllocationPrecommit gRPC method. message QueryAllocationPrecommitResponse { // prevote submitted within the latest voting period AllocationPrecommit precommit = 1; } +// QueryAllocationPrecommitsRequest is the request type for the Query/AllocationPrecommits gRPC method. +message QueryAllocationPrecommitsRequest {} + +// QueryAllocationPrecommitResponse is the response type for the Query/AllocationPrecommits gRPC method. +message QueryAllocationPrecommitsResponse { + // prevote submitted within the latest voting period + repeated AllocationPrecommit precommits = 1; +} + // QueryAllocationCommitRequest is the request type for the Query/QueryallocationDataVote gRPC method. message QueryAllocationCommitRequest { // validator operator address @@ -99,10 +88,20 @@ message QueryAllocationCommitResponse { Allocation commit = 1; } -// QueryCommitPeriodRequest is the request type for the Query/VotePeriod gRPC method. +// QueryAllocationCommitsRequest is the request type for the Query/QueryAllocationCommits gRPC method. +message QueryAllocationCommitsRequest { +} + +// QueryAllocationCommitsResponse is the response type for the Query/QueryAllocationCommits gRPC method. +message QueryAllocationCommitsResponse { + // votes containing the allocation feed submitted within the latest voting period + repeated Allocation commits = 1; +} + +// QueryCommitPeriodRequest is the request type for the Query/QueryCommitPeriod gRPC method. message QueryCommitPeriodRequest {} -// QueryCommitPeriodResponse is the response type for the Query/VotePeriod gRPC method. +// QueryCommitPeriodResponse is the response type for the Query/QueryCommitPeriod gRPC method. message QueryCommitPeriodResponse { // block height at which the query was processed int64 current_height = 1; @@ -111,3 +110,11 @@ message QueryCommitPeriodResponse { // block height at which the current voting period ends int64 vote_period_end = 3; } + +// QueryCellarsRequest is the request type for Query/QueryCellars gRPC method. +message QueryCellarsRequest {} + +// QueryCellarsResponse is the response type for Query/QueryCellars gRPC method. +message QueryCellarsResponse { + repeated Cellar cellars = 1; +} \ No newline at end of file diff --git a/proto/allocation/v1/tx.proto b/proto/allocation/v1/tx.proto index 41c950cc..ca400c08 100644 --- a/proto/allocation/v1/tx.proto +++ b/proto/allocation/v1/tx.proto @@ -9,26 +9,12 @@ option go_package = "github.com/peggyjv/sommelier/x/allocation/types"; // MsgService defines the msgs that the oracle module handles. service Msg { - // DelegateAllocations defines a message that delegates the allocating to an account address. - rpc DelegateAllocations (MsgDelegateAllocations) returns (MsgDelegateAllocationsResponse); - // OracleDataPrevote defines a message that commits a hash of a oracle data feed before the data is actually submitted. + // AllocationPrecommit defines a message that commits a hash of allocation data feed before the data is actually submitted. rpc AllocationPrecommit (MsgAllocationPrecommit) returns (MsgAllocationPrecommitResponse); - // OracleDataVote defines a message to submit the actual oracle data that was committed by the feeder through the prevote. + // AllocationCommit defines a message to submit the actual allocation data that was committed by the feeder through the pre-commit. rpc AllocationCommit (MsgAllocationCommit) returns (MsgAllocationCommitResponse); } -// MsgDelegateAllocations defines sdk.Msg for delegating allocation rights from a validator -// to another address, must be signed by an active validator -message MsgDelegateAllocations { - // delegate account address - string delegate = 1; - // validator operator address - string validator = 2; -} - -// MsgDelegateAllocationsResponse is the response type for the Msg/DelegateAllocations gRPC method. -message MsgDelegateAllocationsResponse {} - // MsgAllocationPrecommit - sdk.Msg for prevoting on an array of oracle data types. // The purpose of the prevote is to hide vote for data with hashes formatted as hex string: diff --git a/x/allocation/client/cli/query.go b/x/allocation/client/cli/query.go index 1bd756fd..969d46e5 100644 --- a/x/allocation/client/cli/query.go +++ b/x/allocation/client/cli/query.go @@ -18,8 +18,6 @@ func GetQueryCmd() *cobra.Command { allocationQueryCmd.AddCommand([]*cobra.Command{ queryParams(), - queryDelegateAddress(), - queryValidatorAddress(), queryAllocationPrecommit(), queryAllocationCommit(), queryVotePeriod(), @@ -54,56 +52,6 @@ func queryParams() *cobra.Command { } } -func queryDelegateAddress() *cobra.Command { - return &cobra.Command{ - Use: "delegate-address [validator-address]", - Aliases: []string{"del"}, - Args: cobra.ExactArgs(1), - Short: "query delegate address from the chain given validators address", - RunE: func(cmd *cobra.Command, args []string) error { - ctx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(ctx) - req := &types.QueryDelegateAddressRequest{Validator: args[0]} - - res, err := queryClient.QueryDelegateAddress(cmd.Context(), req) - if err != nil { - return err - } - - return ctx.PrintProto(res) - }, - } -} - -func queryValidatorAddress() *cobra.Command { - return &cobra.Command{ - Use: "validator-address [delegate-address]", - Aliases: []string{"val"}, - Args: cobra.ExactArgs(1), - Short: "query validator address from the chain given the address that validator delegated to", - RunE: func(cmd *cobra.Command, args []string) error { - ctx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(ctx) - req := &types.QueryValidatorAddressRequest{Delegate: args[0]} - - res, err := queryClient.QueryValidatorAddress(cmd.Context(), req) - if err != nil { - return err - } - - return ctx.PrintProto(res) - }, - } -} - func queryAllocationPrecommit() *cobra.Command { return &cobra.Command{ Use: "allocation-precommit [signer]", diff --git a/x/allocation/client/cli/tx.go b/x/allocation/client/cli/tx.go index 504b6181..7b69188d 100644 --- a/x/allocation/client/cli/tx.go +++ b/x/allocation/client/cli/tx.go @@ -1,60 +1,20 @@ package cli import ( - "fmt" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/peggyjv/sommelier/x/allocation/types" - "github.com/spf13/cobra" ) // GetTxCmd returns the transaction commands for this module func GetTxCmd() *cobra.Command { oracleTxCmd := &cobra.Command{ - Use: "oracle", - Short: "Oracle transaction subcommands", + Use: "allocation", + Short: "Allocation transaction subcommands", DisableFlagParsing: true, SuggestionsMinimumDistance: 2, RunE: client.ValidateCmd, } - oracleTxCmd.AddCommand( - txDelegateFeedPermission(), - ) - + // todo(mvid): figure out what is useful, implement return oracleTxCmd } - -func txDelegateFeedPermission() *cobra.Command { - cmd := &cobra.Command{ - Use: "delegate-feeder [delegate-address]", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - ctx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - delegateAddress, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - return err - } - - validatorAddr := sdk.ValAddress(ctx.GetFromAddress()) - - msg := types.NewMsgDelegateAllocations(delegateAddress, validatorAddr) - if err = msg.ValidateBasic(); err != nil { - return fmt.Errorf("message validation failed: %w", err) - } - - return tx.GenerateOrBroadcastTxCLI(ctx, cmd.Flags(), msg) - - }, - } - flags.AddTxFlagsToCmd(cmd) - return cmd -} diff --git a/x/allocation/genesis.go b/x/allocation/genesis.go deleted file mode 100644 index 93500bb9..00000000 --- a/x/allocation/genesis.go +++ /dev/null @@ -1,33 +0,0 @@ -package allocation - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/peggyjv/sommelier/x/allocation/keeper" - "github.com/peggyjv/sommelier/x/allocation/types" -) - -// InitGenesis initialize default parameters -// and the keeper's address to pubkey map -func InitGenesis(ctx sdk.Context, k keeper.Keeper, gs types.GenesisState) { - k.SetParams(ctx, gs.Params) - // Set the vote period at initialization - k.SetCommitPeriodStart(ctx, ctx.BlockHeight()) - - for _, delegation := range gs.FeederDelegations { - // NOTE: error checked during genesis validation - valAddress, _ := sdk.ValAddressFromBech32(delegation.Validator) - delAddress, _ := sdk.AccAddressFromBech32(delegation.Delegate) - - k.SetValidatorDelegateAddress(ctx, delAddress, valAddress) - } -} - -// ExportGenesis writes the current store values -// to a genesis file, which can be imported again -// with InitGenesis -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) types.GenesisState { - return types.GenesisState{ - Params: k.GetParamSet(ctx), - FeederDelegations: k.GetAllAllocationDelegations(ctx), - } -} diff --git a/x/allocation/handler.go b/x/allocation/handler.go index 45eec383..bd980e45 100644 --- a/x/allocation/handler.go +++ b/x/allocation/handler.go @@ -15,9 +15,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { ctx = ctx.WithEventManager(sdk.NewEventManager()) switch msg := msg.(type) { - case *types.MsgDelegateAllocations: - res, err := k.DelegateAllocations(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) case *types.MsgAllocationPrecommit: res, err := k.AllocationPrecommit(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/allocation/keeper/abci.go b/x/allocation/keeper/abci.go index 613e8be8..cf4f18bb 100644 --- a/x/allocation/keeper/abci.go +++ b/x/allocation/keeper/abci.go @@ -3,11 +3,9 @@ package keeper import ( "fmt" - "github.com/ethereum/go-ethereum/common" - "github.com/peggyjv/sommelier/x/allocation/types" - sdk "github.com/cosmos/cosmos-sdk/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + gravitytypes "github.com/peggyjv/gravity-bridge/module/x/gravity/types" + "github.com/peggyjv/sommelier/x/allocation/types" ) // BeginBlocker is called at the beginning of every block @@ -79,82 +77,25 @@ func (k Keeper) EndBlocker(ctx sdk.Context) { return } - k.Logger(ctx).Info("tallying oracle votes", "height", fmt.Sprintf("%d", ctx.BlockHeight())) - - votedPower := int64(0) - - var ( - // validators who submitted their vote - validatorsCommittedMap = make(map[string]bool) - // cellarMap is a map of cellars by address - cellarsMap = make(map[common.Address]types.Cellar) - // cellarCommitsMap is a list of commits by cellar - cellarCommitsMap = make(map[common.Address][]types.Allocation) - // cellarTickWeightPowerMap is a map of cellars to pools to ticks with power adjusted allocations - cellarPowerMap = make(map[common.Address]map[int64]*types.Cellar) - ) - - for _, cellar := range k.GetCellars(ctx) { - cellarsMap[common.HexToAddress(cellar.Id)] = cellar + k.Logger(ctx).Info("tallying allocation votes", "height", fmt.Sprintf("%d", ctx.BlockHeight())) + winningVotes := k.GetWinningVotes(ctx, params.VoteThreshold) + + k.Logger(ctx).Info("package all winning allocation votes into contract calls") + // todo: implement batch sends to save on gas + for _, wv := range winningVotes { + k.Logger(ctx).Info("setting outgoing tx for contract call", + "cellar", wv.String(), + "tick ranges length", len(wv.TickRanges)) + contractCall := k.gravityKeeper.CreateContractCallTx( + ctx, + k.IncrementInvalidationNonce(ctx), + wv.InvalidationScope(), + wv.ABIEncodedRebalanceBytes(), + []gravitytypes.ERC20Token{}, // tokens are always zero + []gravitytypes.ERC20Token{}) + k.gravityKeeper.SetOutgoingTx(ctx, contractCall) } - // iterate over the data votes - // TODO: only iterate on the last voting period - k.IterateAllocationCommitValidators(ctx, func(validatorAddr sdk.ValAddress) bool { - // NOTE: the commit might have been submitted by a delegate, so we have to check the - // original validator address - - validator := k.stakingKeeper.Validator(ctx, validatorAddr) - if validator == nil { - // validator nor found, continue with next commit - k.Logger(ctx).Debug( - "validator not found for oracle commit tally", - "validator-address", validatorAddr.String(), - ) - return false - } - - validatorPower := validator.GetConsensusPower(k.stakingKeeper.PowerReduction(ctx)) - - k.IterateValidatorAllocationCommits(ctx, validatorAddr, func(cellar common.Address, commit types.Allocation) bool { - cellarCommitsMap[cellar] = append(cellarCommitsMap[cellar], commit) - cellarPowerMap[cellar][validatorPower] = commit.Cellar - - // delete the commit as it has already been processed - // TODO: consider keeping the votes for a few voting windows in order to - // be able to submit evidence of inaccurate data feed - k.DeleteAllocationCommit(ctx, validatorAddr, cellar) - - return false - }) - - // mark the validator voting as true - validatorsCommittedMap[validatorAddr.String()] = true - - votedPower += validatorPower - - return false - }) - - //panic("todo: figure out if the votes for a cellar are high enough to merit a rebalance") - - // iterate over the full list of validators to increment miss counters if they didn't vote - totalPower := int64(0) - k.stakingKeeper.IterateBondedValidatorsByPower(ctx, func(_ int64, validator stakingtypes.ValidatorI) bool { - totalPower += validator.GetConsensusPower(k.stakingKeeper.PowerReduction(ctx)) - return false - }) - - // if the voted_power/total_power > params.VoteThreshold then we submit the allocation to the contract - //quorumReached := sdk.NewDec(votedPower).Quo(sdk.NewDec(totalPower)).GT(params.VoteThreshold) - //if quorumReached { - // // todo: create new allocation contract call - //} - - // NOTE: the reward amount should be less than the slashed amount - - // TODO: Setup module account for oracle module. - // Reset state prior to next round k.DeleteAllPrecommits(ctx) diff --git a/x/allocation/keeper/genesis.go b/x/allocation/keeper/genesis.go new file mode 100644 index 00000000..713a2c16 --- /dev/null +++ b/x/allocation/keeper/genesis.go @@ -0,0 +1,34 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/peggyjv/sommelier/x/allocation/types" +) + +// InitGenesis initialize default parameters +// and the keeper's address to pubkey map +func InitGenesis(ctx sdk.Context, k Keeper, gs types.GenesisState) { + k.setParams(ctx, gs.Params) + // Set the vote period at initialization + k.SetCommitPeriodStart(ctx, ctx.BlockHeight()) + + for _, cellar := range gs.Cellars { + k.SetCellar(ctx, *cellar) + } +} + +// ExportGenesis writes the current store values +// to a genesis file, which can be imported again +// with InitGenesis +func ExportGenesis(ctx sdk.Context, k Keeper) types.GenesisState { + var cellars []*types.Cellar + k.IterateCellars(ctx, func(cellar types.Cellar) (stop bool) { + cellars = append(cellars, &cellar) + return false + }) + + return types.GenesisState{ + Params: k.GetParamSet(ctx), + Cellars: cellars, + } +} diff --git a/x/allocation/keeper/keeper.go b/x/allocation/keeper/keeper.go index 1853d590..b90c0ed4 100644 --- a/x/allocation/keeper/keeper.go +++ b/x/allocation/keeper/keeper.go @@ -4,6 +4,8 @@ import ( "bytes" "fmt" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" @@ -29,7 +31,6 @@ func NewKeeper( cdc codec.BinaryCodec, key sdk.StoreKey, paramSpace paramtypes.Subspace, stakingKeeper types.StakingKeeper, gravityKeeper types.GravityKeeper, ) Keeper { - // set KeyTable if it has not already been set if !paramSpace.HasKeyTable() { paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) @@ -49,69 +50,6 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", "x/"+types.ModuleName) } -//////////////////////// -// MsgDelegateAddress // -//////////////////////// - -// SetValidatorDelegateAddress sets a new address that will have the power to send data on behalf of the validator -func (k Keeper) SetValidatorDelegateAddress(ctx sdk.Context, del sdk.AccAddress, val sdk.ValAddress) { - ctx.KVStore(k.storeKey).Set(types.GetAllocationDelegateKey(del), val.Bytes()) -} - -// GetValidatorAddressFromDelegate returns the delegate address for a given validator -func (k Keeper) GetValidatorAddressFromDelegate(ctx sdk.Context, del sdk.AccAddress) sdk.ValAddress { - return ctx.KVStore(k.storeKey).Get(types.GetAllocationDelegateKey(del)) -} - -// GetDelegateAddressFromValidator returns the validator address for a given delegate -func (k Keeper) GetDelegateAddressFromValidator(ctx sdk.Context, val sdk.ValAddress) sdk.AccAddress { - var address sdk.AccAddress - // TODO: create secondary index - k.IterateDelegateAddresses(ctx, func(delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress) bool { - if !val.Equals(validatorAddr) { - return false - } - - address = delegatorAddr - return true - }) - return address -} - -// IsDelegateAddress returns true if the validator has delegated their feed to an address -func (k Keeper) IsDelegateAddress(ctx sdk.Context, del sdk.AccAddress) bool { - return ctx.KVStore(k.storeKey).Has(types.GetAllocationDelegateKey(del)) -} - -// IterateDelegateAddresses iterates over all delegate address pairs in the store -func (k Keeper) IterateDelegateAddresses(ctx sdk.Context, handler func(del sdk.AccAddress, val sdk.ValAddress) (stop bool)) { - store := ctx.KVStore(k.storeKey) - iter := sdk.KVStorePrefixIterator(store, []byte{types.AllocationDelegateKeyPrefix}) - defer iter.Close() - for ; iter.Valid(); iter.Next() { - del := sdk.AccAddress(bytes.TrimPrefix(iter.Key(), []byte{types.AllocationDelegateKeyPrefix})) - val := sdk.ValAddress(iter.Value()) - if handler(del, val) { - break - } - } -} - -// GetAllAllocationDelegations returns all the delegations for allocations -func (k Keeper) GetAllAllocationDelegations(ctx sdk.Context) []types.MsgDelegateAllocations { - allocationDelegations := make([]types.MsgDelegateAllocations, 0) - - k.IterateDelegateAddresses(ctx, func(del sdk.AccAddress, val sdk.ValAddress) bool { - allocationDelegations = append(allocationDelegations, types.MsgDelegateAllocations{ - Delegate: del.String(), - Validator: val.String(), - }) - return false - }) - - return allocationDelegations -} - ///////////// // Cellars // ///////////// @@ -363,8 +301,8 @@ func (k Keeper) GetParamSet(ctx sdk.Context) types.Params { return p } -// SetParams sets the parameters in the store -func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { +// setParams sets the parameters in the store +func (k Keeper) setParams(ctx sdk.Context, params types.Params) { k.paramSpace.SetParamSet(ctx, ¶ms) } @@ -436,3 +374,65 @@ func (k Keeper) DeleteCellar(ctx sdk.Context, cellarAddr common.Address) { store := ctx.KVStore(k.storeKey) store.Delete(types.GetCellarKey(cellarAddr)) } + +/////////// +// Votes // +/////////// + +func (k Keeper) GetWinningVotes(ctx sdk.Context, threshold sdk.Dec) (winningVotes []types.Cellar) { + for _, cellar := range k.GetCellars(ctx) { + cellar := cellar + totalPower := int64(0) + + var votes []types.Cellar + var votePowers []int64 + + // iterate over all bonded validators + k.stakingKeeper.IterateBondedValidatorsByPower(ctx, func(_ int64, validator stakingtypes.ValidatorI) bool { + validatorPower := validator.GetConsensusPower(k.stakingKeeper.PowerReduction(ctx)) + totalPower += validatorPower + + commit, ok := k.GetAllocationCommit(ctx, validator.GetOperator(), cellar.Address()) + if !ok { + return false + } + + found := false + for i, vote := range votes { + if vote.Equals(*commit.Cellar) { + votePowers[i] += validatorPower + + found = true + break + } + } + + if !found { + votes = append(votes, *commit.Cellar) + votePowers = append(votePowers, validatorPower) + } + + // commit has been counted, removing from the store + k.DeleteAllocationCommit(ctx, validator.GetOperator(), cellar.Address()) + + return false + }) + + maxVoteIndex := 0 + maxVotePower := int64(0) + for i, power := range votePowers { + if power > maxVotePower { + maxVotePower = power + maxVoteIndex = i + } + } + + quorumReached := sdk.NewDec(maxVotePower).Quo(sdk.NewDec(totalPower)).GT(threshold) + if quorumReached { + winningVote := votes[maxVoteIndex] + winningVotes = append(winningVotes, winningVote) + } + } + + return winningVotes +} diff --git a/x/allocation/keeper/keeper_test.go b/x/allocation/keeper/keeper_test.go new file mode 100644 index 00000000..ab00fd5e --- /dev/null +++ b/x/allocation/keeper/keeper_test.go @@ -0,0 +1,117 @@ +package keeper + +import ( + "testing" + + sdktypes "github.com/cosmos/cosmos-sdk/types" + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/sommelier/x/allocation/types" + "github.com/stretchr/testify/require" +) + +type ValCellar struct { + Val sdktypes.ValAddress + Cellar types.Cellar +} + +type VoteCalculatorTestCase struct { + title string + description string + CellarID common.Address + ValCellars []ValCellar + WinningVotes []types.Cellar +} + +var ( + vallAddrA, _ = sdktypes.ValAddressFromHex("24ep6yqkhpwnfdrrapu6fzmjp3xrpsgca11ab1e") + //vallAddrB, _ = sdktypes.ValAddressFromHex("1wr4386xp9u0mtk8u56hdf5zuurga0hb01dface") + //vallAddrC, _ = sdktypes.ValAddressFromHex("1wr4386xp9u0mtk8u56hdf5zuurga0hdeadbeef") + //vallAddrD, _ = sdktypes.ValAddressFromHex("1wr4386xp9u0mtk8u56hdf5zuurga0hf005ba11") + + cellarAddrA = common.HexToAddress("0xc0ffee254729296a45a3885639AC7E10F9d54979") +) + +func TestGetWinningVotes(t *testing.T) { + testCases := []VoteCalculatorTestCase{ + {title: "Single voter", + description: "Check that a single voter returns it's vote", + CellarID: cellarAddrA, + ValCellars: []ValCellar{ + {Val: vallAddrA, + Cellar: types.Cellar{Id: cellarAddrA.String(), TickRanges: []*types.TickRange{ + {Upper: 100, Lower: -100, Weight: 30}, + }, + }, + }, + }, + WinningVotes: []types.Cellar{ + { + Id: cellarAddrA.String(), + TickRanges: []*types.TickRange{ + {Upper: 100, Lower: -100, Weight: 30}, + }, + }, + }, + }, + } + + for _, test := range testCases { + input := CreateTestEnv(t) + ctx := input.Context + + for _, vc := range test.ValCellars { + commit := types.Allocation{ + Cellar: &vc.Cellar, + Salt: "testsalt", + } + + if _, found := input.AllocationKeeper.GetCellarByID(ctx, common.HexToAddress(vc.Cellar.Id)); !found { + input.AllocationKeeper.SetCellar(ctx, vc.Cellar) + } + + input.AllocationKeeper.SetAllocationCommit(ctx, vc.Val, cellarAddrA, commit) + } + + winningVotes := input.AllocationKeeper.GetWinningVotes(ctx, sdktypes.MustNewDecFromStr("0.66")) + require.Lenf(t, winningVotes, 1, "require that winning votes contains only one cellar") + } +} + +func TestHashingPreCommitsAndCommits(t *testing.T) { + input := CreateTestEnv(t) + ctx := input.Context + + testCellar := common.HexToAddress("0x6ea5992aB4A78D5720bD12A089D13c073d04B55d") + + commit := types.Allocation{ + Cellar: &types.Cellar{ + Id: testCellar.String(), + TickRanges: []*types.TickRange{ + {Upper: 200, Lower: 100, Weight: 10}, + {Upper: 300, Lower: 200, Weight: 20}, + {Upper: 400, Lower: 300, Weight: 30}, + {Upper: 500, Lower: 400, Weight: 40}, + }, + }, + Salt: "testsalt", + } + + testAcc, err := sdktypes.AccAddressFromHex("beefface") + require.NoError(t, err, "unable to parse acc addr") + testVal := sdktypes.ValAddress(testAcc) + + preCommitMsg, err := types.NewMsgAllocationPrecommit(*commit.Cellar, commit.Salt, testAcc, testVal) + require.NoError(t, err, "can't make precommit message") + + // store precommit + input.AllocationKeeper.SetAllocationPrecommit(ctx, testVal, testCellar, *preCommitMsg.Precommit[0]) + + // retrieve precommit + pc, found := input.AllocationKeeper.GetAllocationPrecommit(ctx, testVal, common.HexToAddress(commit.Cellar.Id)) + require.True(t, found, "didn't find precommit") + require.Equal(t, preCommitMsg.Precommit[0].Hash, pc.Hash, "bytes unequal after retrieving precommit") + + commitHash, err := commit.Cellar.Hash(commit.Salt, testVal) + require.NoError(t, err, "couldn't hash commit") + require.Equal(t, pc.Hash, commitHash, "hashes don't match") +} diff --git a/x/allocation/keeper/msg_server.go b/x/allocation/keeper/msg_server.go index 81ddc8c5..f466e726 100644 --- a/x/allocation/keeper/msg_server.go +++ b/x/allocation/keeper/msg_server.go @@ -3,7 +3,7 @@ package keeper import ( "bytes" "context" - "encoding/hex" + "encoding/json" "fmt" "strings" @@ -20,46 +20,20 @@ import ( var _ types.MsgServer = Keeper{} -// DelegateAllocations implements types.MsgServer -func (k Keeper) DelegateAllocations(c context.Context, msg *types.MsgDelegateAllocations) (*types.MsgDelegateAllocationsResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - - val, del := msg.MustGetValidator(), msg.MustGetDelegate() - - // check that the signer is a bonded validator and is not jailed - validator := k.stakingKeeper.Validator(ctx, val) - if validator == nil { - return nil, sdkerrors.Wrap(stakingtypes.ErrNoValidatorFound, val.String()) - } - - if validator.IsUnbonded() { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "validator %s cannot be unbonded", validator.GetOperator()) - } - - if validator.IsJailed() { - return nil, sdkerrors.Wrap(stakingtypes.ErrValidatorJailed, validator.GetOperator().String()) - } +func (k Keeper) signerToValAddr(ctx sdk.Context, signer sdk.AccAddress) (sdk.ValAddress, error) { + validatorAddr := k.gravityKeeper.GetOrchestratorValidatorAddress(ctx, signer) + if validatorAddr == nil { + validator := k.stakingKeeper.Validator(ctx, sdk.ValAddress(signer)) + if validator == nil { + return nil, sdkerrors.Wrap(stakingtypes.ErrNoValidatorFound, sdk.ValAddress(signer).String()) + } - // check that the delegate feeder is not a validator, this prevents mirroring and freeloading - // See https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841 - if k.stakingKeeper.Validator(ctx, sdk.ValAddress(del)) != nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnauthorized, "feeder delegate %s cannot be a validator", del) + validatorAddr = validator.GetOperator() + // NOTE: we set the validator address so we don't have to call look up for the validator + // everytime a validator feeder submits oracle data + k.gravityKeeper.SetOrchestratorValidatorAddress(ctx, validatorAddr, signer) } - - k.SetValidatorDelegateAddress(ctx, del, val) - - ctx.EventManager().EmitEvent( - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), - sdk.NewAttribute(sdk.AttributeKeyAction, types.EventTypeDelegateAllocations), - sdk.NewAttribute(sdk.AttributeKeySender, msg.Validator), - sdk.NewAttribute(types.AttributeKeyValidator, msg.Validator), - sdk.NewAttribute(types.AttributeKeyDeleagate, msg.Delegate), - ), - ) - - return &types.MsgDelegateAllocationsResponse{}, nil + return validatorAddr, nil } // AllocationPrecommit implements types.MsgServer @@ -67,25 +41,25 @@ func (k Keeper) AllocationPrecommit(c context.Context, msg *types.MsgAllocationP ctx := sdk.UnwrapSDKContext(c) signer := msg.MustGetSigner() - validatorAddr := k.GetValidatorAddressFromDelegate(ctx, signer) - if validatorAddr == nil { - validator := k.stakingKeeper.Validator(ctx, sdk.ValAddress(signer)) - if validator == nil { - return nil, sdkerrors.Wrap(stakingtypes.ErrNoValidatorFound, sdk.ValAddress(signer).String()) - } - - validatorAddr = validator.GetOperator() - // NOTE: we set the validator address so we don't have to call look up for the validator - // everytime the a validator feeder submits oracle data - k.SetValidatorDelegateAddress(ctx, signer, validatorAddr) + validatorAddr, err := k.signerToValAddr(ctx, signer) + if err != nil { + return nil, err } // TODO: set precommit for current voting period hashList := make([]string, len(msg.Precommit)) cellarList := make([]string, len(msg.Precommit)) + + cellarSet := mapset.NewThreadUnsafeSet() + for _, cellar := range k.GetCellars(ctx) { + cellarSet.Add(cellar.Id) + } for _, ap := range msg.Precommit { + if !cellarSet.Contains(ap.CellarId) { + return nil, fmt.Errorf("precommit for unknown cellar ID %s", ap.CellarId) + } cellarList = append(cellarList, ap.CellarId) - hashList = append(hashList, ap.Hash.String()) + hashList = append(hashList, string(ap.Hash)) k.SetAllocationPrecommit(ctx, validatorAddr, common.HexToAddress(ap.CellarId), *ap) } @@ -118,21 +92,11 @@ func (k Keeper) AllocationCommit(c context.Context, msg *types.MsgAllocationComm // Make sure that the message was properly signed signer := msg.MustGetSigner() - val := k.GetValidatorAddressFromDelegate(ctx, signer) - if val == nil { - validator := k.stakingKeeper.Validator(ctx, sdk.ValAddress(signer)) - if validator == nil { - return nil, sdkerrors.Wrap(stakingtypes.ErrNoValidatorFound, sdk.ValAddress(signer).String()) - } - - val = validator.GetOperator() - // NOTE: we set the validator address so we don't have to call look up for the validator - // everytime the a validator feeder submits oracle data - k.SetValidatorDelegateAddress(ctx, signer, val) + val, err := k.signerToValAddr(ctx, signer) + if err != nil { + return nil, err } - // check that the validator is still bonded and is not jailed - allocationEvents := sdk.Events{ sdk.NewEvent( sdk.EventTypeMessage, @@ -168,25 +132,29 @@ func (k Keeper) AllocationCommit(c context.Context, msg *types.MsgAllocationComm return nil, sdkerrors.Wrap(types.ErrNoPrecommit, val.String()) } - // marshal the protobuf message to computing the hash - databytes, err := commit.Cellar.Marshal() - + // calculate the vote hash on the server + commitHash, err := commit.Cellar.Hash(commit.Salt, val) if err != nil { - return nil, sdkerrors.Wrap( - sdkerrors.ErrJSONMarshal, "failed to marshal json pool allocations", - ) + return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, "failed to hash cellar allocation") } - hexbytes := hex.EncodeToString(databytes) - - // calculate the vote hash on the server - commitHash := types.DataHash(commit.Salt, hexbytes, val) - // compare to precommit hash + cellarJSON, err := json.Marshal(commit.Cellar) + if err != nil { + return nil, err + } if !bytes.Equal(commitHash, precommit.Hash) { + k.Logger(ctx).Error( + "error with hash", + "msg", msg.String(), + "commit", cellarJSON, + "signer", val.String(), + "salt", commit.Salt, + "precommit hash", string(precommit.Hash), + ) return nil, sdkerrors.Wrapf( types.ErrHashMismatch, - "precommit %x ≠ commit %x", precommit.Hash, commitHash, + "precommit %x ≠ commit %x. cellar json: %s, signer val %s", precommit.Hash, commitHash, string(cellarJSON), val, ) } diff --git a/x/allocation/keeper/query_server.go b/x/allocation/keeper/query_server.go index 9425e453..10fd1638 100644 --- a/x/allocation/keeper/query_server.go +++ b/x/allocation/keeper/query_server.go @@ -13,56 +13,6 @@ import ( var _ types.QueryServer = Keeper{} -// QueryDelegateAddress implements QueryServer -func (k Keeper) QueryDelegateAddress(c context.Context, req *types.QueryDelegateAddressRequest) (*types.QueryDelegateAddressResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "empty request") - } - - ctx := sdk.UnwrapSDKContext(c) - - val, err := sdk.ValAddressFromBech32(req.Validator) - if err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - - delegateAddr := k.GetDelegateAddressFromValidator(ctx, val) - if delegateAddr == nil { - return nil, status.Errorf( - codes.NotFound, "delegator address for validator %s", req.Validator, - ) - } - - return &types.QueryDelegateAddressResponse{ - Delegate: delegateAddr.String(), - }, nil -} - -// QueryValidatorAddress implements QueryServer -func (k Keeper) QueryValidatorAddress(c context.Context, req *types.QueryValidatorAddressRequest) (*types.QueryValidatorAddressResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "empty request") - } - - ctx := sdk.UnwrapSDKContext(c) - - del, err := sdk.AccAddressFromBech32(req.Delegate) - if err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - - validatorAddr := k.GetValidatorAddressFromDelegate(ctx, del) - if validatorAddr == nil { - return nil, status.Errorf( - codes.NotFound, "delegator address for delegate %s", req.Delegate, - ) - } - - return &types.QueryValidatorAddressResponse{ - Validator: validatorAddr.String(), - }, nil -} - // QueryAllocationPrecommit implements QueryServer func (k Keeper) QueryAllocationPrecommit(c context.Context, req *types.QueryAllocationPrecommitRequest) (*types.QueryAllocationPrecommitResponse, error) { if req == nil { @@ -86,6 +36,21 @@ func (k Keeper) QueryAllocationPrecommit(c context.Context, req *types.QueryAllo }, nil } +// QueryAllocationPrecommits implements QueryServer +func (k Keeper) QueryAllocationPrecommits(c context.Context, _ *types.QueryAllocationPrecommitsRequest) (*types.QueryAllocationPrecommitsResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + var precommits []*types.AllocationPrecommit + k.IterateAllocationPrecommits(ctx, func(val sdk.ValAddress, cel common.Address, precommit types.AllocationPrecommit) (stop bool) { + precommits = append(precommits, &precommit) + return false + }) + + return &types.QueryAllocationPrecommitsResponse{ + Precommits: precommits, + }, nil +} + // QueryAllocationCommit implements QueryServer func (k Keeper) QueryAllocationCommit(c context.Context, req *types.QueryAllocationCommitRequest) (*types.QueryAllocationCommitResponse, error) { if req == nil { @@ -109,6 +74,21 @@ func (k Keeper) QueryAllocationCommit(c context.Context, req *types.QueryAllocat }, nil } +// QueryAllocationCommits implements QueryServer +func (k Keeper) QueryAllocationCommits(c context.Context, _ *types.QueryAllocationCommitsRequest) (*types.QueryAllocationCommitsResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + var commits []*types.Allocation + k.IterateAllocationCommits(ctx, func(val sdk.ValAddress, cel common.Address, commit types.Allocation) (stop bool) { + commits = append(commits, &commit) + return false + }) + + return &types.QueryAllocationCommitsResponse{ + Commits: commits, + }, nil +} + // QueryParams implements QueryServer func (k Keeper) QueryParams(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { return &types.QueryParamsResponse{ @@ -130,3 +110,15 @@ func (k Keeper) QueryCommitPeriod(c context.Context, _ *types.QueryCommitPeriodR CurrentHeight: ctx.BlockHeight(), }, nil } + +func (k Keeper) QueryCellars(c context.Context, _ *types.QueryCellarsRequest) (*types.QueryCellarsResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + var cellars []*types.Cellar + k.IterateCellars(ctx, func(cellar types.Cellar) (stop bool) { + cellars = append(cellars, &cellar) + return false + }) + + return &types.QueryCellarsResponse{Cellars: cellars}, nil +} diff --git a/x/allocation/keeper/test_common.go b/x/allocation/keeper/test_common.go new file mode 100644 index 00000000..41c8519d --- /dev/null +++ b/x/allocation/keeper/test_common.go @@ -0,0 +1,621 @@ +package keeper + +import ( + "bytes" + "testing" + "time" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + ccodec "github.com/cosmos/cosmos-sdk/crypto/codec" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + ccrypto "github.com/cosmos/cosmos-sdk/crypto/types" + "github.com/cosmos/cosmos-sdk/std" + "github.com/cosmos/cosmos-sdk/store" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/x/auth" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/auth/vesting" + "github.com/cosmos/cosmos-sdk/x/bank" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/capability" + "github.com/cosmos/cosmos-sdk/x/crisis" + "github.com/cosmos/cosmos-sdk/x/distribution" + distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client" + distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + "github.com/cosmos/cosmos-sdk/x/evidence" + "github.com/cosmos/cosmos-sdk/x/genutil" + "github.com/cosmos/cosmos-sdk/x/gov" + govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/cosmos/cosmos-sdk/x/mint" + "github.com/cosmos/cosmos-sdk/x/params" + paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" + paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + paramsproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" + "github.com/cosmos/cosmos-sdk/x/slashing" + slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" + "github.com/cosmos/cosmos-sdk/x/staking" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/cosmos-sdk/x/upgrade" + upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" + gethcommon "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/gravity-bridge/module/x/gravity" + gravitykeeper "github.com/peggyjv/gravity-bridge/module/x/gravity/keeper" + gravitytypes "github.com/peggyjv/gravity-bridge/module/x/gravity/types" + "github.com/peggyjv/sommelier/x/allocation/types" + "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/libs/log" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + dbm "github.com/tendermint/tm-db" +) + +var ( + // ModuleBasics is a mock module basic manager for testing + ModuleBasics = module.NewBasicManager( + auth.AppModuleBasic{}, + genutil.AppModuleBasic{}, + bank.AppModuleBasic{}, + capability.AppModuleBasic{}, + staking.AppModuleBasic{}, + mint.AppModuleBasic{}, + distribution.AppModuleBasic{}, + gov.NewAppModuleBasic( + paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, upgradeclient.CancelProposalHandler, + ), + params.AppModuleBasic{}, + crisis.AppModuleBasic{}, + slashing.AppModuleBasic{}, + upgrade.AppModuleBasic{}, + evidence.AppModuleBasic{}, + vesting.AppModuleBasic{}, + gravity.AppModuleBasic{}, + ) + + // Ensure that StakingKeeperMock implements required interface + _ types.StakingKeeper = &StakingKeeperMock{} +) + +var ( + // ConsPrivKeys generate ed25519 ConsPrivKeys to be used for validator operator keys + ConsPrivKeys = []ccrypto.PrivKey{ + ed25519.GenPrivKey(), + ed25519.GenPrivKey(), + ed25519.GenPrivKey(), + ed25519.GenPrivKey(), + ed25519.GenPrivKey(), + } + + // ConsPubKeys holds the consensus public keys to be used for validator operator keys + ConsPubKeys = []ccrypto.PubKey{ + ConsPrivKeys[0].PubKey(), + ConsPrivKeys[1].PubKey(), + ConsPrivKeys[2].PubKey(), + ConsPrivKeys[3].PubKey(), + ConsPrivKeys[4].PubKey(), + } + + // AccPrivKeys generate secp256k1 pubkeys to be used for account pub keys + AccPrivKeys = []ccrypto.PrivKey{ + secp256k1.GenPrivKey(), + secp256k1.GenPrivKey(), + secp256k1.GenPrivKey(), + secp256k1.GenPrivKey(), + secp256k1.GenPrivKey(), + } + + // AccPubKeys holds the pub keys for the account keys + AccPubKeys = []ccrypto.PubKey{ + AccPrivKeys[0].PubKey(), + AccPrivKeys[1].PubKey(), + AccPrivKeys[2].PubKey(), + AccPrivKeys[3].PubKey(), + AccPrivKeys[4].PubKey(), + } + + // AccAddrs holds the sdk.AccAddresses + AccAddrs = []sdk.AccAddress{ + sdk.AccAddress(AccPubKeys[0].Address()), + sdk.AccAddress(AccPubKeys[1].Address()), + sdk.AccAddress(AccPubKeys[2].Address()), + sdk.AccAddress(AccPubKeys[3].Address()), + sdk.AccAddress(AccPubKeys[4].Address()), + } + + // ValAddrs holds the sdk.ValAddresses + ValAddrs = []sdk.ValAddress{ + sdk.ValAddress(AccPubKeys[0].Address()), + sdk.ValAddress(AccPubKeys[1].Address()), + sdk.ValAddress(AccPubKeys[2].Address()), + sdk.ValAddress(AccPubKeys[3].Address()), + sdk.ValAddress(AccPubKeys[4].Address()), + } + + // TODO: generate the eth priv keys here and + // derive the address from them. + + // EthAddrs holds etheruem addresses + EthAddrs = []gethcommon.Address{ + gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(1)}, 20)), + gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(2)}, 20)), + gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(3)}, 20)), + gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(4)}, 20)), + gethcommon.BytesToAddress(bytes.Repeat([]byte{byte(5)}, 20)), + } + + // TokenContractAddrs holds example token contract addresses + TokenContractAddrs = []string{ + "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI + "0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e", // YFI + "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984", // UNI + "0xc00e94cb662c3520282e6f5717214004a7f26888", // COMP + "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", // SNX + } + + // InitTokens holds the number of tokens to initialize an account with + InitTokens = sdk.TokensFromConsensusPower(110, sdk.DefaultPowerReduction) + + // InitCoins holds the number of coins to initialize an account with + InitCoins = sdk.NewCoins(sdk.NewCoin(TestingStakeParams.BondDenom, InitTokens)) + + // StakingAmount holds the staking power to start a validator with + StakingAmount = sdk.TokensFromConsensusPower(10, sdk.DefaultPowerReduction) + + // StakingCoins holds the staking coins to start a validator with + StakingCoins = sdk.NewCoins(sdk.NewCoin(TestingStakeParams.BondDenom, StakingAmount)) + + // TestingStakeParams is a set of staking params for testing + TestingStakeParams = stakingtypes.Params{ + UnbondingTime: 100, + MaxValidators: 10, + MaxEntries: 10, + HistoricalEntries: 10000, + BondDenom: "stake", + } + + // TestingAllocationParams is a set of gravity params for testing + threshold, _ = sdk.NewDecFromStr("0.66") + TestingAllocationParams = types.Params{ + VoteThreshold: threshold, + VotePeriod: 10, + } +) + +// TestInput stores the various keepers required to test gravity +type TestInput struct { + AllocationKeeper Keeper + GravityKeeper gravitykeeper.Keeper + AccountKeeper authkeeper.AccountKeeper + StakingKeeper stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + DistKeeper distrkeeper.Keeper + BankKeeper bankkeeper.BaseKeeper + GovKeeper govkeeper.Keeper + Context sdk.Context + Marshaler codec.Codec + LegacyAmino *codec.LegacyAmino +} + +// CreateTestEnv creates the keeper testing environment for gravity +func CreateTestEnv(t *testing.T) TestInput { + t.Helper() + + // Initialize store keys + keyGravity := sdk.NewKVStoreKey(gravitytypes.StoreKey) + keyAcc := sdk.NewKVStoreKey(authtypes.StoreKey) + keyStaking := sdk.NewKVStoreKey(stakingtypes.StoreKey) + keyBank := sdk.NewKVStoreKey(banktypes.StoreKey) + keyDistro := sdk.NewKVStoreKey(distrtypes.StoreKey) + keyParams := sdk.NewKVStoreKey(paramstypes.StoreKey) + tkeyParams := sdk.NewTransientStoreKey(paramstypes.TStoreKey) + keyGov := sdk.NewKVStoreKey(govtypes.StoreKey) + keySlashing := sdk.NewKVStoreKey(slashingtypes.StoreKey) + keyAllocation := sdk.NewKVStoreKey(types.StoreKey) + + // Initialize memory database and mount stores on it + db := dbm.NewMemDB() + ms := store.NewCommitMultiStore(db) + ms.MountStoreWithDB(keyGravity, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyAcc, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyParams, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyStaking, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyBank, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyDistro, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(tkeyParams, sdk.StoreTypeTransient, db) + ms.MountStoreWithDB(keyGov, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keySlashing, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyAllocation, sdk.StoreTypeIAVL, db) + err := ms.LoadLatestVersion() + require.Nil(t, err) + + // Create sdk.Context + ctx := sdk.NewContext(ms, tmproto.Header{ + Height: 1234567, + Time: time.Date(2020, time.April, 22, 12, 0, 0, 0, time.UTC), + }, false, log.TestingLogger()) + + cdc := MakeTestCodec() + marshaler := MakeTestMarshaler() + + paramsKeeper := paramskeeper.NewKeeper(marshaler, cdc, keyParams, tkeyParams) + paramsKeeper.Subspace(authtypes.ModuleName) + paramsKeeper.Subspace(banktypes.ModuleName) + paramsKeeper.Subspace(stakingtypes.ModuleName) + paramsKeeper.Subspace(distrtypes.ModuleName) + paramsKeeper.Subspace(govtypes.ModuleName) + paramsKeeper.Subspace(types.DefaultParamspace) + paramsKeeper.Subspace(slashingtypes.ModuleName) + paramsKeeper.Subspace(gravitytypes.ModuleName) + + // this is also used to initialize module accounts for all the map keys + maccPerms := map[string][]string{ + authtypes.FeeCollectorName: nil, + distrtypes.ModuleName: nil, + stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, + stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, + govtypes.ModuleName: {authtypes.Burner}, + types.ModuleName: {authtypes.Minter, authtypes.Burner}, + } + + accountKeeper := authkeeper.NewAccountKeeper( + marshaler, + keyAcc, // target store + getSubspace(paramsKeeper, authtypes.ModuleName), + authtypes.ProtoBaseAccount, // prototype + maccPerms, + ) + + blockedAddr := make(map[string]bool, len(maccPerms)) + for acc := range maccPerms { + blockedAddr[authtypes.NewModuleAddress(acc).String()] = true + } + + bankKeeper := bankkeeper.NewBaseKeeper( + marshaler, + keyBank, + accountKeeper, + getSubspace(paramsKeeper, banktypes.ModuleName), + blockedAddr, + ) + bankKeeper.SetParams(ctx, banktypes.Params{DefaultSendEnabled: true}) + + stakingKeeper := stakingkeeper.NewKeeper(marshaler, keyStaking, accountKeeper, bankKeeper, getSubspace(paramsKeeper, stakingtypes.ModuleName)) + stakingKeeper.SetParams(ctx, TestingStakeParams) + + distKeeper := distrkeeper.NewKeeper(marshaler, keyDistro, getSubspace(paramsKeeper, distrtypes.ModuleName), accountKeeper, bankKeeper, stakingKeeper, authtypes.FeeCollectorName, nil) + distKeeper.SetParams(ctx, distrtypes.DefaultParams()) + + // set genesis items required for distribution + distKeeper.SetFeePool(ctx, distrtypes.InitialFeePool()) + + // total supply to track this + totalSupply := sdk.NewCoins(sdk.NewInt64Coin("stake", 100000000)) + + // set up initial accounts + for name, perms := range maccPerms { + mod := authtypes.NewEmptyModuleAccount(name, perms...) + if name == stakingtypes.NotBondedPoolName { + require.NoError(t, fundModAccount(ctx, bankKeeper, mod.GetName(), totalSupply)) + } else if name == distrtypes.ModuleName { + // some big pot to pay out + amt := sdk.NewCoins(sdk.NewInt64Coin("stake", 500000)) + require.NoError(t, fundModAccount(ctx, bankKeeper, mod.GetName(), amt)) + } + + accountKeeper.SetModuleAccount(ctx, mod) + } + + stakeAddr := authtypes.NewModuleAddress(stakingtypes.BondedPoolName) + moduleAcct := accountKeeper.GetAccount(ctx, stakeAddr) + require.NotNil(t, moduleAcct) + + router := baseapp.NewRouter() + router.AddRoute(bank.AppModule{}.Route()) + router.AddRoute(staking.AppModule{}.Route()) + router.AddRoute(distribution.AppModule{}.Route()) + + // Load default wasm config + + govRouter := govtypes.NewRouter(). + AddRoute(paramsproposal.RouterKey, params.NewParamChangeProposalHandler(paramsKeeper)). + AddRoute(govtypes.RouterKey, govtypes.ProposalHandler) + + govKeeper := govkeeper.NewKeeper( + marshaler, keyGov, getSubspace(paramsKeeper, govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable()), accountKeeper, bankKeeper, stakingKeeper, govRouter, + ) + + govKeeper.SetProposalID(ctx, govtypes.DefaultStartingProposalID) + govKeeper.SetDepositParams(ctx, govtypes.DefaultDepositParams()) + govKeeper.SetVotingParams(ctx, govtypes.DefaultVotingParams()) + govKeeper.SetTallyParams(ctx, govtypes.DefaultTallyParams()) + + slashingKeeper := slashingkeeper.NewKeeper( + marshaler, + keySlashing, + &stakingKeeper, + getSubspace(paramsKeeper, slashingtypes.ModuleName).WithKeyTable(slashingtypes.ParamKeyTable()), + ) + + gravityKeeper := gravitykeeper.NewKeeper( + marshaler, + keyGravity, + getSubspace(paramsKeeper, gravitytypes.DefaultParamspace), + accountKeeper, + stakingKeeper, + bankKeeper, + slashingKeeper, + sdk.DefaultPowerReduction, + ) + + stakingKeeper = *stakingKeeper.SetHooks( + stakingtypes.NewMultiStakingHooks( + distKeeper.Hooks(), + slashingKeeper.Hooks(), + gravityKeeper.Hooks(), + ), + ) + + k := NewKeeper( + marshaler, + keyAllocation, + getSubspace(paramsKeeper, types.DefaultParamspace), + stakingKeeper, + gravityKeeper, + ) + + k.setParams(ctx, TestingAllocationParams) + + return TestInput{ + AllocationKeeper: k, + GravityKeeper: gravityKeeper, + AccountKeeper: accountKeeper, + BankKeeper: bankKeeper, + StakingKeeper: stakingKeeper, + SlashingKeeper: slashingKeeper, + DistKeeper: distKeeper, + GovKeeper: govKeeper, + Context: ctx, + Marshaler: marshaler, + LegacyAmino: cdc, + } +} + +// getSubspace returns a param subspace for a given module name. +func getSubspace(k paramskeeper.Keeper, moduleName string) paramstypes.Subspace { + subspace, _ := k.GetSubspace(moduleName) + return subspace +} + +// MakeTestCodec creates a legacy amino codec for testing +func MakeTestCodec() *codec.LegacyAmino { + var cdc = codec.NewLegacyAmino() + auth.AppModuleBasic{}.RegisterLegacyAminoCodec(cdc) + bank.AppModuleBasic{}.RegisterLegacyAminoCodec(cdc) + staking.AppModuleBasic{}.RegisterLegacyAminoCodec(cdc) + distribution.AppModuleBasic{}.RegisterLegacyAminoCodec(cdc) + sdk.RegisterLegacyAminoCodec(cdc) + ccodec.RegisterCrypto(cdc) + params.AppModuleBasic{}.RegisterLegacyAminoCodec(cdc) + //types.RegisterCodec(cdc) + return cdc +} + +// MakeTestMarshaler creates a proto codec for use in testing +func MakeTestMarshaler() codec.Codec { + interfaceRegistry := codectypes.NewInterfaceRegistry() + std.RegisterInterfaces(interfaceRegistry) + ModuleBasics.RegisterInterfaces(interfaceRegistry) + types.RegisterInterfaces(interfaceRegistry) + return codec.NewProtoCodec(interfaceRegistry) +} + +// MockStakingValidatorData creates mock validator data +type MockStakingValidatorData struct { + Operator sdk.ValAddress + Power int64 +} + +// NewStakingKeeperWeightedMock creates a new mock staking keeper with some mock validator data +func NewStakingKeeperWeightedMock(t ...MockStakingValidatorData) *StakingKeeperMock { + r := &StakingKeeperMock{ + BondedValidators: make([]stakingtypes.Validator, len(t)), + ValidatorPower: make(map[string]int64, len(t)), + } + + for i, a := range t { + pk, err := codectypes.NewAnyWithValue(ed25519.GenPrivKey().PubKey()) + if err != nil { + panic(err) + } + r.BondedValidators[i] = stakingtypes.Validator{ + ConsensusPubkey: pk, + OperatorAddress: a.Operator.String(), + Status: stakingtypes.Bonded, + } + r.ValidatorPower[a.Operator.String()] = a.Power + } + return r +} + +// StakingKeeperMock is a mock staking keeper for use in the tests +type StakingKeeperMock struct { + BondedValidators []stakingtypes.Validator + ValidatorPower map[string]int64 +} + +// GetBondedValidatorsByPower implements the interface for staking keeper required by gravity +func (s *StakingKeeperMock) GetBondedValidatorsByPower(ctx sdk.Context) []stakingtypes.Validator { + return s.BondedValidators +} + +// GetLastValidatorPower implements the interface for staking keeper required by gravity +func (s *StakingKeeperMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64 { + v, ok := s.ValidatorPower[operator.String()] + if !ok { + panic("unknown address") + } + return v +} + +// GetLastTotalPower implements the interface for staking keeper required by gravity +func (s *StakingKeeperMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int) { + var total int64 + for _, v := range s.ValidatorPower { + total += v + } + return sdk.NewInt(total) +} + +// IterateValidators staisfies the interface +func (s *StakingKeeperMock) IterateValidators(ctx sdk.Context, cb func(index int64, validator stakingtypes.ValidatorI) (stop bool)) { + for i, val := range s.BondedValidators { + stop := cb(int64(i), val) + if stop { + break + } + } +} + +// IterateBondedValidatorsByPower staisfies the interface +func (s *StakingKeeperMock) IterateBondedValidatorsByPower(ctx sdk.Context, cb func(index int64, validator stakingtypes.ValidatorI) (stop bool)) { + for i, val := range s.BondedValidators { + stop := cb(int64(i), val) + if stop { + break + } + } +} + +// IterateLastValidators staisfies the interface +func (s *StakingKeeperMock) IterateLastValidators(ctx sdk.Context, cb func(index int64, validator stakingtypes.ValidatorI) (stop bool)) { + for i, val := range s.BondedValidators { + stop := cb(int64(i), val) + if stop { + break + } + } +} + +// Validator staisfies the interface +func (s *StakingKeeperMock) Validator(ctx sdk.Context, addr sdk.ValAddress) stakingtypes.ValidatorI { + for _, val := range s.BondedValidators { + if val.GetOperator().Equals(addr) { + return val + } + } + return nil +} + +// ValidatorByConsAddr staisfies the interface +func (s *StakingKeeperMock) ValidatorByConsAddr(ctx sdk.Context, addr sdk.ConsAddress) stakingtypes.ValidatorI { + for _, val := range s.BondedValidators { + cons, err := val.GetConsAddr() + if err != nil { + panic(err) + } + if cons.Equals(addr) { + return val + } + } + return nil +} + +func (s *StakingKeeperMock) GetParams(ctx sdk.Context) stakingtypes.Params { + return stakingtypes.DefaultParams() +} + +func (s *StakingKeeperMock) GetValidator(ctx sdk.Context, addr sdk.ValAddress) (validator stakingtypes.Validator, found bool) { + panic("unexpected call") +} + +func (s *StakingKeeperMock) ValidatorQueueIterator(ctx sdk.Context, endTime time.Time, endHeight int64) sdk.Iterator { + store := ctx.KVStore(sdk.NewKVStoreKey("staking")) + return store.Iterator(stakingtypes.ValidatorQueueKey, sdk.InclusiveEndBytes(stakingtypes.GetValidatorQueueKey(endTime, endHeight))) + +} + +// Slash satisfies the interface +func (s *StakingKeeperMock) Slash(sdk.Context, sdk.ConsAddress, int64, int64, sdk.Dec) {} + +// Jail satisfies the interface +func (s *StakingKeeperMock) Jail(sdk.Context, sdk.ConsAddress) {} + +// PowerReduction satisfies the interface +func (s *StakingKeeperMock) PowerReduction(sdk.Context) sdk.Int { + return sdk.NewInt(0) +} + +// AlwaysPanicStakingMock is a mock staking keeper that panics on usage +type AlwaysPanicStakingMock struct{} + +// GetLastTotalPower implements the interface for staking keeper required by gravity +func (s AlwaysPanicStakingMock) GetLastTotalPower(ctx sdk.Context) (power sdk.Int) { + panic("unexpected call") +} + +// GetBondedValidatorsByPower implements the interface for staking keeper required by gravity +func (s AlwaysPanicStakingMock) GetBondedValidatorsByPower(ctx sdk.Context) []stakingtypes.Validator { + panic("unexpected call") +} + +// GetLastValidatorPower implements the interface for staking keeper required by gravity +func (s AlwaysPanicStakingMock) GetLastValidatorPower(ctx sdk.Context, operator sdk.ValAddress) int64 { + panic("unexpected call") +} + +// IterateValidators satisfies the interface +func (s AlwaysPanicStakingMock) IterateValidators(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) { + panic("unexpected call") +} + +// IterateBondedValidatorsByPower satisfies the interface +func (s AlwaysPanicStakingMock) IterateBondedValidatorsByPower(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) { + panic("unexpected call") +} + +// IterateLastValidators satisfies the interface +func (s AlwaysPanicStakingMock) IterateLastValidators(sdk.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool)) { + panic("unexpected call") +} + +// Validator satisfies the interface +func (s AlwaysPanicStakingMock) Validator(sdk.Context, sdk.ValAddress) stakingtypes.ValidatorI { + panic("unexpected call") +} + +// ValidatorByConsAddr satisfies the interface +func (s AlwaysPanicStakingMock) ValidatorByConsAddr(sdk.Context, sdk.ConsAddress) stakingtypes.ValidatorI { + panic("unexpected call") +} + +// Slash satisfies the interface +func (s AlwaysPanicStakingMock) Slash(sdk.Context, sdk.ConsAddress, int64, int64, sdk.Dec) { + panic("unexpected call") +} + +// Jail satisfies the interface +func (s AlwaysPanicStakingMock) Jail(sdk.Context, sdk.ConsAddress) { + panic("unexpected call") +} + +// PowerReduction satisfies the interface +func (s AlwaysPanicStakingMock) PowerReduction(sdk.Context) sdk.Int { + panic("unexpected call") +} + +func fundModAccount(ctx sdk.Context, bankKeeper gravitytypes.BankKeeper, recipientMod string, amounts sdk.Coins) error { + if err := bankKeeper.MintCoins(ctx, types.ModuleName, amounts); err != nil { + return err + } + + return bankKeeper.SendCoinsFromModuleToModule(ctx, types.ModuleName, recipientMod, amounts) +} diff --git a/x/allocation/module.go b/x/allocation/module.go index a9deeba6..8ab3124a 100644 --- a/x/allocation/module.go +++ b/x/allocation/module.go @@ -130,7 +130,7 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate { var genesisState types.GenesisState cdc.MustUnmarshalJSON(data, &genesisState) - InitGenesis(ctx, am.keeper, genesisState) + keeper.InitGenesis(ctx, am.keeper, genesisState) return []abci.ValidatorUpdate{} } @@ -138,7 +138,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, data json. // ExportGenesis returns the exported genesis state as raw bytes for the oracle // module. func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { - genesisState := ExportGenesis(ctx, am.keeper) + genesisState := keeper.ExportGenesis(ctx, am.keeper) return cdc.MustMarshalJSON(&genesisState) } diff --git a/x/allocation/types/abi.go b/x/allocation/types/abi.go new file mode 100644 index 00000000..ac7bf1d9 --- /dev/null +++ b/x/allocation/types/abi.go @@ -0,0 +1,14 @@ +package types + +import ( + "github.com/ethereum/go-ethereum/accounts/abi" + "strings" +) + +const CellarABI = ` +[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_feeLevel","type":"uint24"},{"components":[{"internalType":"uint184","name":"tokenId","type":"uint184"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"uint24","name":"weight","type":"uint24"}],"internalType":"struct ICellarPoolShare.CellarTickInfo[]","name":"_cellarTickInfo","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"AddedLiquidity","type":"event"},{"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":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"RemovedLiquidity","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":[{"components":[{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarAddParams","name":"cellarParams","type":"tuple"}],"name":"addLiquidityEthForUniV3","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarAddParams","name":"cellarParams","type":"tuple"}],"name":"addLiquidityForUniV3","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":"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cellarTickInfo","outputs":[{"internalType":"uint184","name":"tokenId","type":"uint184"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"uint24","name":"weight","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLevel","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastLockedBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint184","name":"tokenId","type":"uint184"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"uint24","name":"weight","type":"uint24"}],"internalType":"struct ICellarPoolShare.CellarTickInfo[]","name":"_cellarTickInfo","type":"tuple[]"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarRemoveParams","name":"cellarParams","type":"tuple"}],"name":"removeLiquidityEthFromUniV3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarRemoveParams","name":"cellarParams","type":"tuple"}],"name":"removeLiquidityFromUniV3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newFee","type":"uint16"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}] +` + +func abiJSON() (abi.ABI, error) { + return abi.JSON(strings.NewReader(CellarABI)) +} \ No newline at end of file diff --git a/x/allocation/types/allocation.pb.go b/x/allocation/types/allocation.pb.go index 937e3828..5eb2a20a 100644 --- a/x/allocation/types/allocation.pb.go +++ b/x/allocation/types/allocation.pb.go @@ -11,7 +11,6 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" - github_com_tendermint_tendermint_libs_bytes "github.com/tendermint/tendermint/libs/bytes" ) // Reference imports to suppress errors if they are not otherwise used. @@ -28,8 +27,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // AllocationPrecommit defines an array of hashed data to be used for the precommit phase // of allocation type AllocationPrecommit struct { - Hash github_com_tendermint_tendermint_libs_bytes.HexBytes `protobuf:"bytes,1,opt,name=hash,proto3,casttype=github.com/tendermint/tendermint/libs/bytes.HexBytes" json:"hash,omitempty"` - CellarId string `protobuf:"bytes,2,opt,name=cellar_id,json=cellarId,proto3" json:"cellar_id,omitempty"` + // bytes hash = 1 [(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes"]; + Hash []byte `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + CellarId string `protobuf:"bytes,2,opt,name=cellar_id,json=cellarId,proto3" json:"cellar_id,omitempty"` } func (m *AllocationPrecommit) Reset() { *m = AllocationPrecommit{} } @@ -65,7 +65,7 @@ func (m *AllocationPrecommit) XXX_DiscardUnknown() { var xxx_messageInfo_AllocationPrecommit proto.InternalMessageInfo -func (m *AllocationPrecommit) GetHash() github_com_tendermint_tendermint_libs_bytes.HexBytes { +func (m *AllocationPrecommit) GetHash() []byte { if m != nil { return m.Hash } @@ -186,9 +186,9 @@ func (m *Cellar) GetTickRanges() []*TickRange { } type TickRange struct { - Upper uint64 `protobuf:"varint,1,opt,name=upper,proto3" json:"upper,omitempty"` - Lower uint64 `protobuf:"varint,2,opt,name=lower,proto3" json:"lower,omitempty"` - Weight uint64 `protobuf:"varint,3,opt,name=weight,proto3" json:"weight,omitempty"` + Upper int32 `protobuf:"varint,1,opt,name=upper,proto3" json:"upper,omitempty"` + Lower int32 `protobuf:"varint,2,opt,name=lower,proto3" json:"lower,omitempty"` + Weight uint32 `protobuf:"varint,3,opt,name=weight,proto3" json:"weight,omitempty"` } func (m *TickRange) Reset() { *m = TickRange{} } @@ -224,21 +224,21 @@ func (m *TickRange) XXX_DiscardUnknown() { var xxx_messageInfo_TickRange proto.InternalMessageInfo -func (m *TickRange) GetUpper() uint64 { +func (m *TickRange) GetUpper() int32 { if m != nil { return m.Upper } return 0 } -func (m *TickRange) GetLower() uint64 { +func (m *TickRange) GetLower() int32 { if m != nil { return m.Lower } return 0 } -func (m *TickRange) GetWeight() uint64 { +func (m *TickRange) GetWeight() uint32 { if m != nil { return m.Weight } @@ -430,37 +430,35 @@ func init() { func init() { proto.RegisterFile("allocation/v1/allocation.proto", fileDescriptor_23d2c35dae4a6cad) } var fileDescriptor_23d2c35dae4a6cad = []byte{ - // 475 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x53, 0x3f, 0x6f, 0xd3, 0x40, - 0x14, 0xaf, 0x93, 0x10, 0xe1, 0x97, 0x82, 0xc4, 0x51, 0x90, 0xf9, 0x67, 0x22, 0x4f, 0x59, 0x1a, - 0xab, 0x85, 0x01, 0xc6, 0x86, 0x85, 0x4a, 0x40, 0xab, 0x03, 0x16, 0x96, 0xe8, 0xe2, 0x7b, 0x72, - 0x8e, 0x9e, 0x7d, 0xd6, 0xdd, 0x25, 0x6d, 0x36, 0x3e, 0x02, 0x1f, 0x8b, 0xb1, 0x23, 0x13, 0x42, - 0xc9, 0xb7, 0x60, 0x42, 0xbe, 0x73, 0x53, 0xc3, 0xc4, 0xc4, 0xf6, 0x7e, 0x7f, 0xf4, 0xde, 0xcf, - 0xef, 0xfc, 0x20, 0x66, 0x52, 0xaa, 0x8c, 0x59, 0xa1, 0xca, 0x74, 0x79, 0x90, 0x5e, 0xa3, 0x71, - 0xa5, 0x95, 0x55, 0xe4, 0x56, 0x8b, 0x59, 0x1e, 0x3c, 0xdc, 0xcb, 0x55, 0xae, 0x9c, 0x92, 0xd6, - 0x95, 0x37, 0x25, 0x5f, 0x02, 0xb8, 0x7b, 0xb4, 0xf5, 0x9d, 0x6a, 0xcc, 0x54, 0x51, 0x08, 0x4b, - 0xde, 0x40, 0x6f, 0xce, 0xcc, 0x3c, 0x0a, 0x86, 0xc1, 0x68, 0x77, 0xf2, 0xe2, 0xd7, 0x8f, 0xa7, - 0xcf, 0x73, 0x61, 0xe7, 0x8b, 0xd9, 0x38, 0x53, 0x45, 0x6a, 0xb1, 0xe4, 0xa8, 0x0b, 0x51, 0xda, - 0x76, 0x29, 0xc5, 0xcc, 0xa4, 0xb3, 0x95, 0x45, 0x33, 0x7e, 0x8d, 0x17, 0x93, 0xba, 0xa0, 0xae, - 0x0b, 0x79, 0x04, 0x61, 0x86, 0x52, 0x32, 0x3d, 0x15, 0x3c, 0xea, 0x0c, 0x83, 0x51, 0x48, 0x6f, - 0x7a, 0xe2, 0x98, 0x27, 0x27, 0x00, 0xd7, 0x09, 0xc8, 0x3e, 0xf4, 0xbd, 0xe2, 0x46, 0x0f, 0x0e, - 0xef, 0x8d, 0xff, 0xf8, 0x8c, 0xf1, 0x2b, 0x27, 0xd2, 0xc6, 0x44, 0x08, 0xf4, 0x0c, 0x93, 0xb6, - 0x69, 0xea, 0xea, 0xe4, 0x3d, 0xf4, 0xbd, 0x8b, 0xdc, 0x86, 0x8e, 0xe0, 0xae, 0x51, 0x48, 0x3b, - 0x82, 0x93, 0x97, 0x30, 0xb0, 0x22, 0x3b, 0x9b, 0x6a, 0x56, 0xe6, 0x68, 0xa2, 0xce, 0xb0, 0x3b, - 0x1a, 0x1c, 0x46, 0x7f, 0x4d, 0xf8, 0x20, 0xb2, 0x33, 0x5a, 0x1b, 0x28, 0xd8, 0xab, 0xd2, 0x24, - 0x27, 0x10, 0x6e, 0x05, 0xb2, 0x07, 0x37, 0x16, 0x55, 0x85, 0x3e, 0x63, 0x8f, 0x7a, 0x50, 0xb3, - 0x52, 0x9d, 0xa3, 0x76, 0x61, 0x7a, 0xd4, 0x03, 0x72, 0x1f, 0xfa, 0xe7, 0x28, 0xf2, 0xb9, 0x8d, - 0xba, 0x8e, 0x6e, 0x50, 0x22, 0x61, 0xd7, 0xa7, 0xfc, 0x58, 0x71, 0x66, 0x91, 0xec, 0x03, 0x11, - 0xe5, 0x92, 0x49, 0xc1, 0x5d, 0x92, 0x69, 0xa9, 0xca, 0x0c, 0x9b, 0x01, 0x77, 0xda, 0xca, 0xbb, - 0x5a, 0x68, 0xed, 0xa9, 0xf3, 0x0f, 0x7b, 0x4a, 0x34, 0x3c, 0x38, 0xe2, 0xfc, 0x2d, 0x2b, 0x59, - 0x8e, 0xdc, 0x6b, 0xe6, 0x54, 0xab, 0x4a, 0x19, 0x26, 0xeb, 0xe0, 0x56, 0x58, 0x89, 0xcd, 0xa6, - 0x3c, 0x20, 0x43, 0x18, 0x70, 0x34, 0x99, 0x16, 0x55, 0xdd, 0xb3, 0xd9, 0x70, 0x9b, 0x22, 0x4f, - 0x00, 0xb6, 0xcf, 0x6a, 0xa2, 0xee, 0xb0, 0x3b, 0x0a, 0x69, 0x78, 0xf5, 0xae, 0x26, 0x59, 0xc0, - 0x63, 0x8a, 0x85, 0x5a, 0xe2, 0x7f, 0x1d, 0x3b, 0x39, 0xfe, 0xb6, 0x8e, 0x83, 0xcb, 0x75, 0x1c, - 0xfc, 0x5c, 0xc7, 0xc1, 0xd7, 0x4d, 0xbc, 0x73, 0xb9, 0x89, 0x77, 0xbe, 0x6f, 0xe2, 0x9d, 0x4f, - 0x69, 0xeb, 0x17, 0xae, 0x30, 0xcf, 0x57, 0x9f, 0x97, 0xa9, 0x51, 0x45, 0x81, 0x52, 0xa0, 0x4e, - 0x2f, 0x5a, 0x27, 0x94, 0xda, 0x55, 0x85, 0x66, 0xd6, 0x77, 0x47, 0xf2, 0xec, 0x77, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xe7, 0x07, 0xc4, 0x95, 0x6b, 0x03, 0x00, 0x00, + // 443 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x53, 0x3d, 0x6f, 0xd4, 0x40, + 0x14, 0x3c, 0xfb, 0x72, 0x27, 0xfc, 0x2e, 0x41, 0x62, 0x09, 0xc8, 0x7c, 0x59, 0x96, 0x2b, 0x37, + 0x39, 0x2b, 0xa1, 0xa2, 0x0c, 0x48, 0x48, 0x29, 0x20, 0xd1, 0x02, 0x0d, 0xcd, 0x69, 0xe3, 0x7d, + 0xf2, 0x2d, 0x59, 0x7b, 0x2d, 0xef, 0x9e, 0x43, 0xfe, 0x05, 0x3f, 0x8b, 0x32, 0x25, 0x25, 0xba, + 0xfb, 0x23, 0xc8, 0xbb, 0xce, 0x9d, 0xa1, 0xa2, 0x4a, 0xf7, 0xe6, 0xcd, 0x68, 0xde, 0x68, 0xd6, + 0x86, 0x88, 0x49, 0xa9, 0x72, 0x66, 0x84, 0xaa, 0xb2, 0xf6, 0x38, 0xdb, 0xa1, 0x79, 0xdd, 0x28, + 0xa3, 0xc8, 0xc1, 0x60, 0xd3, 0x1e, 0x3f, 0x3f, 0x2c, 0x54, 0xa1, 0x2c, 0x93, 0x75, 0x93, 0x13, + 0x25, 0xef, 0xe1, 0xf1, 0xe9, 0x56, 0x76, 0xd1, 0x60, 0xae, 0xca, 0x52, 0x18, 0x42, 0x60, 0x6f, + 0xc9, 0xf4, 0x32, 0xf4, 0x62, 0x2f, 0xdd, 0xa7, 0x76, 0x26, 0x2f, 0x20, 0xc8, 0x51, 0x4a, 0xd6, + 0x2c, 0x04, 0x0f, 0xfd, 0xd8, 0x4b, 0x03, 0xfa, 0xc0, 0x2d, 0xce, 0x78, 0x72, 0x0e, 0xb0, 0xf3, + 0x21, 0x47, 0x30, 0x75, 0x8c, 0x35, 0x98, 0x9d, 0x3c, 0x99, 0xff, 0x95, 0x65, 0xfe, 0xce, 0x92, + 0xb4, 0x17, 0x75, 0xd7, 0x34, 0x93, 0xa6, 0x37, 0xb5, 0x73, 0xf2, 0x09, 0xa6, 0x4e, 0x45, 0x1e, + 0x82, 0x2f, 0xb8, 0x35, 0x0a, 0xa8, 0x2f, 0x38, 0x79, 0x03, 0x33, 0x23, 0xf2, 0xab, 0x45, 0xc3, + 0xaa, 0x02, 0x75, 0xe8, 0xc7, 0xe3, 0x74, 0x76, 0x12, 0xfe, 0x73, 0xe1, 0xb3, 0xc8, 0xaf, 0x68, + 0x27, 0xa0, 0x60, 0xee, 0x46, 0x9d, 0x9c, 0x43, 0xb0, 0x25, 0xc8, 0x21, 0x4c, 0x56, 0x75, 0x8d, + 0x2e, 0xe3, 0x84, 0x3a, 0xd0, 0x6d, 0xa5, 0xba, 0xc6, 0xc6, 0x86, 0x99, 0x50, 0x07, 0xc8, 0x53, + 0x98, 0x5e, 0xa3, 0x28, 0x96, 0x26, 0x1c, 0xc7, 0x5e, 0x7a, 0x40, 0x7b, 0x94, 0x48, 0xd8, 0x77, + 0x29, 0xbf, 0xd4, 0x9c, 0x19, 0x24, 0x47, 0x40, 0x44, 0xd5, 0x32, 0x29, 0xb8, 0x4d, 0xb2, 0xa8, + 0x54, 0x95, 0xa3, 0x3d, 0xb0, 0x47, 0x1f, 0x0d, 0x99, 0x8f, 0x1d, 0x31, 0xe8, 0xc9, 0xff, 0x8f, + 0x9e, 0x92, 0x06, 0x9e, 0x9d, 0x72, 0xfe, 0x81, 0x55, 0xac, 0x40, 0xee, 0x38, 0x7d, 0xd1, 0xa8, + 0x5a, 0x69, 0x26, 0xbb, 0xe0, 0x46, 0x18, 0x89, 0x7d, 0x53, 0x0e, 0x90, 0x18, 0x66, 0x1c, 0x75, + 0xde, 0x88, 0xba, 0xf3, 0xec, 0x1b, 0x1e, 0xae, 0xc8, 0x2b, 0x80, 0xed, 0xb3, 0xea, 0x70, 0x1c, + 0x8f, 0xd3, 0x80, 0x06, 0x77, 0xef, 0xaa, 0x93, 0x15, 0xbc, 0xa4, 0x58, 0xaa, 0x16, 0xef, 0xf5, + 0xec, 0xdb, 0xb3, 0x9f, 0xeb, 0xc8, 0xbb, 0x5d, 0x47, 0xde, 0xef, 0x75, 0xe4, 0xfd, 0xd8, 0x44, + 0xa3, 0xdb, 0x4d, 0x34, 0xfa, 0xb5, 0x89, 0x46, 0x5f, 0xb3, 0x42, 0x98, 0xe5, 0xea, 0x72, 0x9e, + 0xab, 0x32, 0xab, 0xb1, 0x28, 0x6e, 0xbe, 0xb5, 0x99, 0x56, 0x65, 0x89, 0x52, 0x60, 0x93, 0x7d, + 0x1f, 0xfc, 0x07, 0x99, 0xb9, 0xa9, 0x51, 0x5f, 0x4e, 0xed, 0x97, 0xfe, 0xfa, 0x4f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x2f, 0x22, 0x13, 0xbb, 0x30, 0x03, 0x00, 0x00, } func (m *AllocationPrecommit) Marshal() (dAtA []byte, err error) { @@ -1299,7 +1297,7 @@ func (m *TickRange) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Upper |= uint64(b&0x7F) << shift + m.Upper |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -1318,7 +1316,7 @@ func (m *TickRange) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Lower |= uint64(b&0x7F) << shift + m.Lower |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -1337,7 +1335,7 @@ func (m *TickRange) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Weight |= uint64(b&0x7F) << shift + m.Weight |= uint32(b&0x7F) << shift if b < 0x80 { break } diff --git a/x/allocation/types/cellar.go b/x/allocation/types/cellar.go index 17481f43..3e8e82ac 100644 --- a/x/allocation/types/cellar.go +++ b/x/allocation/types/cellar.go @@ -1,6 +1,11 @@ package types import ( + "encoding/hex" + "github.com/ethereum/go-ethereum/crypto" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/ethereum/go-ethereum/common" tmbytes "github.com/tendermint/tendermint/libs/bytes" ) @@ -10,5 +15,48 @@ func (c *Cellar) Address() common.Address { } func (c *Cellar) InvalidationScope() tmbytes.HexBytes { - panic("implement me") + return crypto.Keccak256Hash(c.ABIEncodedRebalanceBytes()).Bytes() +} + +func (c *Cellar) Equals(other Cellar) bool { + if c.Id != other.Id { + return false + } + + if len(c.TickRanges) != len(other.TickRanges) { + return false + } + + for _, tr := range c.TickRanges { + found := false + for _, otr := range other.TickRanges { + if tr.Equals(*otr) { + found = true + } + } + + if !found { + return false + } + } + + return true +} + +func (c *Cellar) Hash(salt string, val sdk.ValAddress) ([]byte, error) { + //fmt.Printf("hash function XXX salt %s, val %s, cellar %s", salt, val.String(), c) + databytes, err := c.Marshal() + + if err != nil { + return nil, sdkerrors.Wrap( + sdkerrors.ErrJSONMarshal, "failed to marshal cellar", + ) + } + + hexbytes := hex.EncodeToString(databytes) + + // calculate the vote hash on the server + commitHash := DataHash(salt, hexbytes, val) + + return commitHash, nil } diff --git a/x/allocation/types/codec.go b/x/allocation/types/codec.go index 696d8a3b..318dd475 100644 --- a/x/allocation/types/codec.go +++ b/x/allocation/types/codec.go @@ -11,7 +11,6 @@ import ( func RegisterInterfaces(registry codectypes.InterfaceRegistry) { registry.RegisterImplementations( (*sdk.Msg)(nil), - &MsgDelegateAllocations{}, &MsgAllocationPrecommit{}, &MsgAllocationCommit{}, ) diff --git a/x/allocation/types/expected_keepers.go b/x/allocation/types/expected_keepers.go index 0ee79a3f..994c2042 100644 --- a/x/allocation/types/expected_keepers.go +++ b/x/allocation/types/expected_keepers.go @@ -3,7 +3,9 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/ethereum/go-ethereum/common" "github.com/peggyjv/gravity-bridge/module/x/gravity/types" + tmbytes "github.com/tendermint/tendermint/libs/bytes" ) // StakingKeeper defines the expected staking keeper methods @@ -24,4 +26,15 @@ type StakingKeeper interface { // GravityKeeper defines the expected gravity keeper methods type GravityKeeper interface { SetOutgoingTx(ctx sdk.Context, outgoing types.OutgoingTx) + CreateContractCallTx( + ctx sdk.Context, + invalidationNonce uint64, + invalidationScope tmbytes.HexBytes, + payload []byte, + tokens []types.ERC20Token, + fees []types.ERC20Token) *types.ContractCallTx + GetOrchestratorValidatorAddress(ctx sdk.Context, orchAddr sdk.AccAddress) sdk.ValAddress + GetValidatorEthereumAddress(ctx sdk.Context, valAddr sdk.ValAddress) common.Address + GetEthereumOrchestratorAddress(ctx sdk.Context, ethAddr common.Address) sdk.AccAddress + SetOrchestratorValidatorAddress(ctx sdk.Context, val sdk.ValAddress, orchAddr sdk.AccAddress) } diff --git a/x/allocation/types/genesis.go b/x/allocation/types/genesis.go index 99342fb4..1453ee2c 100644 --- a/x/allocation/types/genesis.go +++ b/x/allocation/types/genesis.go @@ -1,41 +1,21 @@ package types -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" -) +const DefaultParamspace = ModuleName // DefaultGenesisState get raw genesis raw message for testing func DefaultGenesisState() GenesisState { return GenesisState{ - Params: DefaultParams(), + Params: DefaultParams(), + Cellars: []*Cellar{}, } } // Validate performs a basic stateless validation of the genesis fields. func (gs GenesisState) Validate() error { - seenDelegations := make(map[string]bool) - - for i, feederDelegation := range gs.FeederDelegations { - if seenDelegations[feederDelegation.Validator] { - return fmt.Errorf("duplicated feeder delegation for validator %s at index %d", feederDelegation.Validator, i) - } - - delegateAddr, err := sdk.AccAddressFromBech32(feederDelegation.Delegate) - if err != nil { - return fmt.Errorf("invalid feeder delegate at index %d: %w", i, err) - } - - validatorAddr, err := sdk.ValAddressFromBech32(feederDelegation.Validator) - if err != nil { - return fmt.Errorf("invalid feeder validator at index %d: %w", i, err) - } - - if delegateAddr.Equals(validatorAddr) { - return fmt.Errorf("delegate address %s cannot be equal to validator address %s", feederDelegation.Delegate, feederDelegation.Validator) + for _, cellar := range gs.Cellars { + if err := cellar.ValidateBasic(); err != nil { + return err } - seenDelegations[feederDelegation.Validator] = true } if err := gs.Params.ValidateBasic(); err != nil { diff --git a/x/allocation/types/genesis.pb.go b/x/allocation/types/genesis.pb.go index e9a24f1b..be754579 100644 --- a/x/allocation/types/genesis.pb.go +++ b/x/allocation/types/genesis.pb.go @@ -27,8 +27,8 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState - all allocation state that must be provided at genesis type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` - FeederDelegations []MsgDelegateAllocations `protobuf:"bytes,2,rep,name=feeder_delegations,json=feederDelegations,proto3" json:"feeder_delegations"` + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + Cellars []*Cellar `protobuf:"bytes,2,rep,name=cellars,proto3" json:"cellars,omitempty"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -71,9 +71,9 @@ func (m *GenesisState) GetParams() Params { return Params{} } -func (m *GenesisState) GetFeederDelegations() []MsgDelegateAllocations { +func (m *GenesisState) GetCellars() []*Cellar { if m != nil { - return m.FeederDelegations + return m.Cellars } return nil } @@ -134,30 +134,29 @@ func init() { func init() { proto.RegisterFile("allocation/v1/genesis.proto", fileDescriptor_4f08404b9486929c) } var fileDescriptor_4f08404b9486929c = []byte{ - // 365 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xcf, 0x6a, 0xea, 0x40, - 0x14, 0xc6, 0x33, 0x7a, 0x11, 0xee, 0x78, 0xbd, 0x70, 0xc3, 0x55, 0xc4, 0x42, 0x22, 0x81, 0x16, - 0x37, 0xcd, 0xa0, 0x2e, 0x0a, 0xdd, 0x35, 0x08, 0xd2, 0x45, 0x41, 0x6c, 0x57, 0x6e, 0x24, 0x26, - 0xa7, 0x63, 0xda, 0xc4, 0x09, 0x99, 0x69, 0xd0, 0xb7, 0xe8, 0x1b, 0xf4, 0x19, 0xfa, 0x16, 0x2e, - 0x5d, 0x96, 0x2e, 0x42, 0xd1, 0x37, 0xf0, 0x09, 0x4a, 0x32, 0xfe, 0x89, 0x5d, 0xe5, 0x9c, 0xef, - 0xfb, 0xf2, 0xfd, 0x06, 0x0e, 0x3e, 0xb3, 0x7d, 0x9f, 0x39, 0xb6, 0xf0, 0xd8, 0x8c, 0xc4, 0x6d, - 0x42, 0x61, 0x06, 0xdc, 0xe3, 0x66, 0x18, 0x31, 0xc1, 0xd4, 0xca, 0xd1, 0x34, 0xe3, 0x76, 0xa3, - 0x76, 0x9a, 0x15, 0x73, 0x19, 0x6b, 0x68, 0xa7, 0x7a, 0xee, 0x27, 0xe9, 0xff, 0xa7, 0x8c, 0xb2, - 0x6c, 0x24, 0xe9, 0x24, 0x55, 0xe3, 0x0d, 0xe1, 0x3f, 0x7d, 0x89, 0xbb, 0x17, 0xb6, 0x00, 0xb5, - 0x8b, 0x4b, 0xa1, 0x1d, 0xd9, 0x01, 0xaf, 0xa3, 0x26, 0x6a, 0x95, 0x3b, 0x55, 0xf3, 0x04, 0x6f, - 0x0e, 0x32, 0xd3, 0xfa, 0xb5, 0x4c, 0x74, 0x65, 0xb8, 0x8b, 0xaa, 0x23, 0xac, 0x3e, 0x02, 0xb8, - 0x10, 0x8d, 0x5d, 0xf0, 0x81, 0x66, 0x61, 0x5e, 0x2f, 0x34, 0x8b, 0xad, 0x72, 0xe7, 0xfc, 0x47, - 0xc1, 0x1d, 0xa7, 0x3d, 0x19, 0x82, 0x9b, 0x83, 0xb1, 0x2f, 0xfc, 0x27, 0x6b, 0x7a, 0xc7, 0x16, - 0xe3, 0x1d, 0xe1, 0x92, 0x84, 0xaa, 0x57, 0xb8, 0x1c, 0x33, 0x01, 0xe3, 0x10, 0x22, 0x8f, 0xb9, - 0xd9, 0x03, 0x8b, 0x56, 0x6d, 0x9b, 0xe8, 0xea, 0xc2, 0x0e, 0xfc, 0x6b, 0x23, 0x67, 0x1a, 0x43, - 0x9c, 0x6e, 0x83, 0x6c, 0x51, 0x67, 0xf8, 0x6f, 0xe6, 0x89, 0x69, 0x04, 0x7c, 0xca, 0x7c, 0xb7, - 0x5e, 0x68, 0xa2, 0xd6, 0x6f, 0xab, 0x9f, 0x42, 0x3f, 0x13, 0xfd, 0x82, 0x7a, 0x62, 0xfa, 0x32, - 0x31, 0x1d, 0x16, 0x10, 0x87, 0xf1, 0x80, 0xf1, 0xdd, 0xe7, 0x92, 0xbb, 0xcf, 0x44, 0x2c, 0x42, - 0xe0, 0x66, 0x0f, 0x9c, 0x6d, 0xa2, 0x57, 0x73, 0xa4, 0x43, 0x9b, 0x31, 0xac, 0xa4, 0xc2, 0xc3, - 0x7e, 0xb7, 0x6e, 0x97, 0x6b, 0x0d, 0xad, 0xd6, 0x1a, 0xfa, 0x5a, 0x6b, 0xe8, 0x75, 0xa3, 0x29, - 0xab, 0x8d, 0xa6, 0x7c, 0x6c, 0x34, 0x65, 0x44, 0x72, 0xa4, 0x10, 0x28, 0x5d, 0x3c, 0xc5, 0x84, - 0xb3, 0x20, 0x00, 0xdf, 0x83, 0x88, 0xcc, 0x73, 0x67, 0x93, 0xd8, 0x49, 0x29, 0xbb, 0x53, 0xf7, - 0x3b, 0x00, 0x00, 0xff, 0xff, 0x67, 0x13, 0x4b, 0x4c, 0x23, 0x02, 0x00, 0x00, + // 341 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x4e, 0xf2, 0x40, + 0x14, 0x85, 0x3b, 0xf0, 0x87, 0x3f, 0x0e, 0xe2, 0xa2, 0x11, 0x42, 0x30, 0x99, 0x92, 0x2e, 0x0c, + 0x1b, 0x3b, 0x41, 0x16, 0x26, 0x2e, 0xab, 0x09, 0x71, 0x47, 0xaa, 0x2b, 0x37, 0x66, 0x28, 0x93, + 0x52, 0x9d, 0x72, 0x9b, 0xce, 0xd8, 0xc0, 0x5b, 0xf8, 0x2a, 0xbe, 0x05, 0x4b, 0x96, 0xc6, 0x45, + 0x63, 0xe0, 0x0d, 0x78, 0x02, 0xd3, 0x29, 0x68, 0x49, 0x5c, 0xcd, 0xbd, 0xe7, 0x9c, 0x7b, 0xbf, + 0xc9, 0x0c, 0x3e, 0x63, 0x42, 0x80, 0xcf, 0x54, 0x08, 0x33, 0x9a, 0xf6, 0x69, 0xc0, 0x67, 0x5c, + 0x86, 0xd2, 0x89, 0x13, 0x50, 0x60, 0x36, 0x7e, 0x4d, 0x27, 0xed, 0x77, 0x5a, 0x87, 0x59, 0x35, + 0x2f, 0x62, 0x1d, 0x72, 0xa8, 0x97, 0x86, 0x0a, 0xff, 0x34, 0x80, 0x00, 0x74, 0x49, 0xf3, 0xaa, + 0x50, 0x6d, 0x85, 0x8f, 0x87, 0x05, 0xed, 0x5e, 0x31, 0xc5, 0xcd, 0x01, 0xae, 0xc5, 0x2c, 0x61, + 0x91, 0x6c, 0xa3, 0x2e, 0xea, 0xd5, 0x2f, 0x9b, 0xce, 0x01, 0xdd, 0x19, 0x69, 0xd3, 0xfd, 0xb7, + 0xcc, 0x2c, 0xc3, 0xdb, 0x45, 0x4d, 0x8a, 0xff, 0xfb, 0x5c, 0x08, 0x96, 0xc8, 0x76, 0xa5, 0x5b, + 0xfd, 0x63, 0xea, 0x46, 0xbb, 0xde, 0x3e, 0x65, 0xbf, 0x23, 0x5c, 0x2b, 0x36, 0x99, 0x57, 0xb8, + 0x9e, 0x82, 0xe2, 0x4f, 0x31, 0x4f, 0x42, 0x98, 0x68, 0x6a, 0xd5, 0x6d, 0x6d, 0x33, 0xcb, 0x5c, + 0xb0, 0x48, 0x5c, 0xdb, 0x25, 0xd3, 0xf6, 0x70, 0xde, 0x8d, 0x74, 0x63, 0xce, 0xf0, 0x89, 0xf6, + 0xd4, 0x34, 0xe1, 0x72, 0x0a, 0x62, 0xd2, 0xae, 0x74, 0x51, 0xef, 0xc8, 0x1d, 0xe6, 0x57, 0xfb, + 0xcc, 0xac, 0xf3, 0x20, 0x54, 0xd3, 0xd7, 0xb1, 0xe3, 0x43, 0x44, 0x7d, 0x90, 0x11, 0xc8, 0xdd, + 0x71, 0x21, 0x27, 0x2f, 0x54, 0x2d, 0x62, 0x2e, 0x9d, 0x5b, 0xee, 0x6f, 0x33, 0xab, 0x59, 0x22, + 0xfd, 0x6c, 0xb3, 0xbd, 0x46, 0x2e, 0x3c, 0xec, 0x7b, 0xf7, 0x6e, 0xb9, 0x26, 0x68, 0xb5, 0x26, + 0xe8, 0x6b, 0x4d, 0xd0, 0xdb, 0x86, 0x18, 0xab, 0x0d, 0x31, 0x3e, 0x36, 0xc4, 0x78, 0xa4, 0x25, + 0x52, 0xcc, 0x83, 0x60, 0xf1, 0x9c, 0x52, 0x09, 0x51, 0xc4, 0x45, 0xc8, 0x13, 0x3a, 0x2f, 0x7d, + 0x45, 0x81, 0x1d, 0xd7, 0xf4, 0xdb, 0x0f, 0xbe, 0x03, 0x00, 0x00, 0xff, 0xff, 0x2e, 0x63, 0x48, + 0x5f, 0xf7, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -180,10 +179,10 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.FeederDelegations) > 0 { - for iNdEx := len(m.FeederDelegations) - 1; iNdEx >= 0; iNdEx-- { + if len(m.Cellars) > 0 { + for iNdEx := len(m.Cellars) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.FeederDelegations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Cellars[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -264,8 +263,8 @@ func (m *GenesisState) Size() (n int) { _ = l l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) - if len(m.FeederDelegations) > 0 { - for _, e := range m.FeederDelegations { + if len(m.Cellars) > 0 { + for _, e := range m.Cellars { l = e.Size() n += 1 + l + sovGenesis(uint64(l)) } @@ -357,7 +356,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FeederDelegations", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Cellars", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -384,8 +383,8 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.FeederDelegations = append(m.FeederDelegations, MsgDelegateAllocations{}) - if err := m.FeederDelegations[len(m.FeederDelegations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Cellars = append(m.Cellars, &Cellar{}) + if err := m.Cellars[len(m.Cellars)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/allocation/types/genesis_test.go b/x/allocation/types/genesis_test.go index a2b95662..225a1933 100644 --- a/x/allocation/types/genesis_test.go +++ b/x/allocation/types/genesis_test.go @@ -3,15 +3,11 @@ package types import ( "testing" + "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/require" - - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - sdk "github.com/cosmos/cosmos-sdk/types" ) func TestGenesisValidate(t *testing.T) { - delAddr := sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()) - valAddr := sdk.ValAddress(secp256k1.GenPrivKey().PubKey().Address()) testCases := []struct { name string @@ -27,10 +23,14 @@ func TestGenesisValidate(t *testing.T) { name: "invalid feeder delegator", genState: GenesisState{ Params: DefaultParams(), - FeederDelegations: []MsgDelegateAllocations{ + Cellars: []*Cellar{ { - Delegate: "", - Validator: valAddr.String(), + common.HexToAddress("0x6ea5992aB4A78D5720bD12A089D13c073d04B55d").String(), + []*TickRange{ + {-189720, -192660, 160}, + {-192660, -198540, 680}, + {-198540, -201540, 160}, + }, }, }, }, @@ -40,10 +40,14 @@ func TestGenesisValidate(t *testing.T) { name: "invalid feeder validator", genState: GenesisState{ Params: DefaultParams(), - FeederDelegations: []MsgDelegateAllocations{ + Cellars: []*Cellar{ { - Delegate: delAddr.String(), - Validator: "", + common.HexToAddress("0x6ea5992aB4A78D5720bD12A089D13c073d04B55d").String(), + []*TickRange{ + {-189720, -192660, 160}, + {-192660, -198540, 680}, + {-198540, -201540, 160}, + }, }, }, }, @@ -53,10 +57,14 @@ func TestGenesisValidate(t *testing.T) { name: "equal feeder addresses", genState: GenesisState{ Params: DefaultParams(), - FeederDelegations: []MsgDelegateAllocations{ + Cellars: []*Cellar{ { - Delegate: delAddr.String(), - Validator: sdk.ValAddress(delAddr).String(), + common.HexToAddress("0x6ea5992aB4A78D5720bD12A089D13c073d04B55d").String(), + []*TickRange{ + {-189720, -192660, 160}, + {-192660, -198540, 680}, + {-198540, -201540, 160}, + }, }, }, }, @@ -66,14 +74,14 @@ func TestGenesisValidate(t *testing.T) { name: "dup feeder delegation", genState: GenesisState{ Params: DefaultParams(), - FeederDelegations: []MsgDelegateAllocations{ - { - Delegate: delAddr.String(), - Validator: valAddr.String(), - }, + Cellars: []*Cellar{ { - Delegate: delAddr.String(), - Validator: valAddr.String(), + common.HexToAddress("0x6ea5992aB4A78D5720bD12A089D13c073d04B55d").String(), + []*TickRange{ + {-189720, -192660, 160}, + {-192660, -198540, 680}, + {-198540, -201540, 160}, + }, }, }, }, diff --git a/x/allocation/types/keys.go b/x/allocation/types/keys.go index 2583eaf9..d4967a1a 100644 --- a/x/allocation/types/keys.go +++ b/x/allocation/types/keys.go @@ -27,9 +27,6 @@ const ( // CellarKeyPrefix - -> Cellar CellarKeyPrefix - // AllocationDelegateKeyPrefix - -> - AllocationDelegateKeyPrefix // key for validator allocation delegation - // AllocationPrecommitKeyPrefix - -> AllocationPrecommitKeyPrefix // key for allocation precommits @@ -41,16 +38,8 @@ const ( // LatestInvalidationNonceKey - -> uint64(latestNonce) LatestInvalidationNonceKey - - // CellarUpdateKey - -> Cellar - CellarUpdateKey ) -// GetAllocationDelegateKey returns the validator for a given delegate key -func GetAllocationDelegateKey(del sdk.AccAddress) []byte { - return append([]byte{AllocationDelegateKeyPrefix}, del.Bytes()...) -} - // GetAllocationPrecommitKey returns the key for a validators prevote for a cellar func GetAllocationPrecommitKey(val sdk.ValAddress, cel common.Address) []byte { return bytes.Join([][]byte{{AllocationPrecommitKeyPrefix}, val.Bytes(), cel.Bytes()}, []byte{}) diff --git a/x/allocation/types/msgs.go b/x/allocation/types/msgs.go index 45f5f4aa..019f8a04 100644 --- a/x/allocation/types/msgs.go +++ b/x/allocation/types/msgs.go @@ -5,13 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - tmbytes "github.com/tendermint/tendermint/libs/bytes" ) var ( - _ sdk.Msg = &MsgDelegateAllocations{} _ sdk.Msg = &MsgAllocationPrecommit{} _ sdk.Msg = &MsgAllocationCommit{} ) @@ -19,96 +15,29 @@ var ( // var _ codectypes.UnpackInterfacesMessage = &MsgAllocationCommit{} const ( - TypeMsgDelegateAllocations = "delegate_allocations" TypeMsgAllocationPrecommit = "allocation_precommit" TypeMsgAllocationCommit = "allocation_commit" ) -//////////////////////////// -// MsgDelegateAllocations // -//////////////////////////// - -// NewMsgDelegateAllocations returns a new MsgDelegateAllocations -func NewMsgDelegateAllocations(del sdk.AccAddress, val sdk.ValAddress) *MsgDelegateAllocations { - if del == nil || val == nil { - return nil - } - - return &MsgDelegateAllocations{ - Validator: val.String(), - Delegate: del.String(), - } -} - -// Route implements sdk.Msg -func (m *MsgDelegateAllocations) Route() string { return ModuleName } - -// Type implements sdk.Msg -func (m *MsgDelegateAllocations) Type() string { return TypeMsgDelegateAllocations } - -// ValidateBasic implements sdk.Msg -func (m *MsgDelegateAllocations) ValidateBasic() error { - validatorAddr, err := sdk.ValAddressFromBech32(m.Validator) - if err != nil { - return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, err.Error()) - } - - delegatorAddr, err := sdk.AccAddressFromBech32(m.Delegate) - if err != nil { - return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, err.Error()) - } - - if sdk.AccAddress(validatorAddr).Equals(delegatorAddr) { - return sdkerrors.Wrap(stakingtypes.ErrBadDelegatorAddr, "delegate address cannot match the delegator address") - } - - return nil -} - -// GetSignBytes implements sdk.Msg -func (m *MsgDelegateAllocations) GetSignBytes() []byte { - panic("amino support disabled") -} - -// GetSigners implements sdk.Msg -func (m *MsgDelegateAllocations) GetSigners() []sdk.AccAddress { - return []sdk.AccAddress{sdk.AccAddress(m.MustGetValidator())} -} - -// MustGetValidator returns the sdk.ValAddress for the validator -func (m *MsgDelegateAllocations) MustGetValidator() sdk.ValAddress { - validatorAddr, err := sdk.ValAddressFromBech32(m.Validator) - if err != nil { - panic(err) - } - - return validatorAddr -} - -// MustGetDelegate returns the sdk.AccAddress for the delegate -func (m *MsgDelegateAllocations) MustGetDelegate() sdk.AccAddress { - delegatorAddr, err := sdk.AccAddressFromBech32(m.Delegate) - if err != nil { - panic(err) - } - - return delegatorAddr -} - ////////////////////////// // MsgAllocationPrecommit // ////////////////////////// // NewMsgAllocationPrecommit return a new MsgAllocationPrecommit -func NewMsgAllocationPrecommit(hash tmbytes.HexBytes, signer sdk.AccAddress) *MsgAllocationPrecommit { +func NewMsgAllocationPrecommit(cellar Cellar, salt string, signer sdk.AccAddress, val sdk.ValAddress) (*MsgAllocationPrecommit, error) { if signer == nil { - return nil + return nil, fmt.Errorf("no signer provided") + } + + hash, err := cellar.Hash(salt, val) + if err != nil { + return nil, err } return &MsgAllocationPrecommit{ - Precommit: []*AllocationPrecommit{{Hash: hash}}, + Precommit: []*AllocationPrecommit{{Hash: hash, CellarId: cellar.Id}}, Signer: signer.String(), - } + }, nil } // Route implements sdk.Msg diff --git a/x/allocation/types/outgoing_tx.go b/x/allocation/types/outgoing_tx.go index 36013895..c7dea307 100644 --- a/x/allocation/types/outgoing_tx.go +++ b/x/allocation/types/outgoing_tx.go @@ -1,38 +1,79 @@ package types import ( - "strings" - + "encoding/hex" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/crypto" + "math/big" ) -// GetCheckpoint gets the checkpoint signature from the given outgoing tx batch -func (c Cellar) GetCheckpoint() []byte { +type ABIEncodedTickRange struct { + TokenID *big.Int `abi:"tokenId"` + Upper *big.Int `abi:"tickUpper"` + Lower *big.Int `abi:"tickLower"` + Weight *big.Int `abi:"weight"` +} - encodedCall, err := abi.JSON(strings.NewReader(cellarABI)) +// ABIEncodedRebalanceBytes gets the checkpoint signature from the given outgoing tx batch +func (c Cellar) ABIEncodedRebalanceBytes() []byte { + encodedCall, err := abiJSON() if err != nil { panic(sdkerrors.Wrap(err, "bad ABI definition in code")) } - // Create the methodName argument which salts the signature - methodNameBytes := []uint8("rebalance") - var rebalanceMethodName [32]uint8 - copy(rebalanceMethodName[:], methodNameBytes) + ticks := make([]ABIEncodedTickRange, len(c.TickRanges)) + for i, t := range c.TickRanges { + up := int64(t.Upper) + lo := int64(t.Lower) + we := uint64(t.Weight) + ticks[i] = ABIEncodedTickRange{big.NewInt(0), big.NewInt(up), big.NewInt(lo), new(big.Int).SetUint64(we)} + } - // // the methodName needs to be the same as the 'name' above in the checkpointAbiJson - // // but other than that it's a constant that has no impact on the output. This is because - // // it gets encoded as a function name which we must then discard. - abiEncodedCall, err := encodedCall.Pack( - "rebalance", - rebalanceMethodName, - ) + abiEncodedCall, err := encodedCall.Pack("rebalance", ticks) if err != nil { panic(err) - } // todo: see if this can be recovered from + } + println("rebalance payload: ", hex.EncodeToString(abiEncodedCall)) - return crypto.Keccak256Hash(abiEncodedCall[4:]).Bytes() + return abiEncodedCall + //return crypto.Keccak256Hash(abiEncodedCall).Bytes() } -const cellarABI = `[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint24","name":"_feeLevel","type":"uint24"},{"components":[{"internalType":"uint184","name":"tokenId","type":"uint184"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"uint24","name":"weight","type":"uint24"}],"internalType":"struct ICellarPoolShare.CellarTickInfo[]","name":"_cellarTickInfo","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"AddedLiquidity","type":"event"},{"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":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"RemovedLiquidity","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":"FEEDOMINATOR","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NONFUNGIBLEPOSITIONMANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SWAPROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAPV3FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarAddParams","name":"cellarParams","type":"tuple"}],"name":"addLiquidityEthForUniV3","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"amount0Desired","type":"uint256"},{"internalType":"uint256","name":"amount1Desired","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarAddParams","name":"cellarParams","type":"tuple"}],"name":"addLiquidityForUniV3","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":"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cellarTickInfo","outputs":[{"internalType":"uint184","name":"tokenId","type":"uint184"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"uint24","name":"weight","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeLevel","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint184","name":"tokenId","type":"uint184"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"uint24","name":"weight","type":"uint24"}],"internalType":"struct ICellarPoolShare.CellarTickInfo[]","name":"_cellarTickInfo","type":"tuple[]"}],"name":"rebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarRemoveParams","name":"cellarParams","type":"tuple"}],"name":"removeLiquidityEthFromUniV3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"amount0Min","type":"uint256"},{"internalType":"uint256","name":"amount1Min","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"internalType":"struct ICellarPoolShare.CellarRemoveParams","name":"cellarParams","type":"tuple"}],"name":"removeLiquidityFromUniV3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newFee","type":"uint16"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]` +// tuple[] packing example +// https://github.com/ethereum/go-ethereum/blob/master/accounts/abi/packing_test.go#L928 + +// solidity types to go types examples +// https://github.com/ethereum/go-ethereum/blob/master/accounts/abi/type_test.go#L143 + +func ABIEncodedCellarTickInfoBytes(index uint) []byte { + encodedCall, err := abiJSON() + if err != nil { + panic(sdkerrors.Wrap(err, "bad ABI definition in code")) + } + + abiEncodedCall, err := encodedCall.Pack("cellarTickInfo", big.NewInt(int64(index))) + if err != nil { + panic(err) + } + + return abiEncodedCall +} + +func BytesToABIEncodedTickRange(bz []byte) (*TickRange, error) { + encodedCall, err := abiJSON() + if err != nil { + panic(sdkerrors.Wrap(err, "bad ABI definition in code")) + } + + var abiEncodedTickRange ABIEncodedTickRange + if err := encodedCall.UnpackIntoInterface(&abiEncodedTickRange, "cellarTickInfo", bz); err != nil { + return nil, err + } + + tr := TickRange{ + Upper: int32(abiEncodedTickRange.Upper.Int64()), + Lower: int32(abiEncodedTickRange.Lower.Int64()), + Weight: uint32(abiEncodedTickRange.Weight.Uint64()), + } + + return &tr, nil +} diff --git a/x/allocation/types/outgoing_tx_test.go b/x/allocation/types/outgoing_tx_test.go new file mode 100644 index 00000000..f965f5fc --- /dev/null +++ b/x/allocation/types/outgoing_tx_test.go @@ -0,0 +1,47 @@ +package types + +import ( + "bytes" + "encoding/hex" + "github.com/ethereum/go-ethereum/crypto" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestABIEncodedRebalanceBytes(t *testing.T) { + + rebalanceBytes := Cellar{ + Id: "0x0000000000", + TickRanges: []*TickRange{ + {-189780, -192480, 160}, + {-192480, -197880, 680}, + {-197880, -200640, 160}, + }, + }.ABIEncodedRebalanceBytes() + rebalanceHash := crypto.Keccak256Hash(rebalanceBytes).Bytes() + + // hash from python brownie code cc @stevenj + testHash, err := hex.DecodeString("0xd0f79d9bfeec64dbc27ccd281a20931cfadc07d87875c3289f55383e59f3ebbc"[2:]) + require.NoError(t, err) + if !bytes.Equal(testHash, rebalanceHash) { + t.Errorf("gold hash is not equal to generated hash:\n gold hash: %x\n test hash: %x", testHash, rebalanceHash) + } +} + +func TestABIEncodedCellarTickInfoBytes(t *testing.T) { + tickInfoHash := ABIEncodedCellarTickInfoBytes(0) + t.Logf("hash: %b", tickInfoHash) +} + +func TestABIDecodeRebalanceCall(t *testing.T) { + hbz, err := hex.DecodeString("135d4f2400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000000028") + require.NoError(t, err) + + abiJson, err := abiJSON() + require.NoError(t, err) + + i, err := abiJson.Unpack("rebalance", hbz) + require.NoError(t, err) + t.Logf("interface %v", i) +} \ No newline at end of file diff --git a/x/allocation/types/params.go b/x/allocation/types/params.go index 2cb86588..c5445a79 100644 --- a/x/allocation/types/params.go +++ b/x/allocation/types/params.go @@ -54,9 +54,9 @@ func validateVotePeriod(i interface{}) error { return fmt.Errorf("invalid parameter type: %T", i) } - if votePeriod < 4 || votePeriod > 10 { + if votePeriod < 4 || votePeriod > 100 { return fmt.Errorf( - "vote period should be between 4 and 10 blocks: %d", votePeriod, + "vote period should be between 4 and 100 blocks: %d", votePeriod, ) } diff --git a/x/allocation/types/query.pb.go b/x/allocation/types/query.pb.go index deb99bf7..098e2fe5 100644 --- a/x/allocation/types/query.pb.go +++ b/x/allocation/types/query.pb.go @@ -115,24 +115,26 @@ func (m *QueryParamsResponse) GetParams() Params { return Params{} } -// QueryDelegateAddressRequest is the request type for the Query/QueryDelegateAddress gRPC method. -type QueryDelegateAddressRequest struct { +// QueryAllocationPrecommitRequest is the request type for the Query/AllocationPrecommit gRPC method. +type QueryAllocationPrecommitRequest struct { // validator operator address Validator string `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` + // cellar contract address + Cellar string `protobuf:"bytes,2,opt,name=cellar,proto3" json:"cellar,omitempty"` } -func (m *QueryDelegateAddressRequest) Reset() { *m = QueryDelegateAddressRequest{} } -func (m *QueryDelegateAddressRequest) String() string { return proto.CompactTextString(m) } -func (*QueryDelegateAddressRequest) ProtoMessage() {} -func (*QueryDelegateAddressRequest) Descriptor() ([]byte, []int) { +func (m *QueryAllocationPrecommitRequest) Reset() { *m = QueryAllocationPrecommitRequest{} } +func (m *QueryAllocationPrecommitRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationPrecommitRequest) ProtoMessage() {} +func (*QueryAllocationPrecommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{2} } -func (m *QueryDelegateAddressRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationPrecommitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryDelegateAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationPrecommitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryDelegateAddressRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationPrecommitRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -142,43 +144,50 @@ func (m *QueryDelegateAddressRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryDelegateAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryDelegateAddressRequest.Merge(m, src) +func (m *QueryAllocationPrecommitRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationPrecommitRequest.Merge(m, src) } -func (m *QueryDelegateAddressRequest) XXX_Size() int { +func (m *QueryAllocationPrecommitRequest) XXX_Size() int { return m.Size() } -func (m *QueryDelegateAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryDelegateAddressRequest.DiscardUnknown(m) +func (m *QueryAllocationPrecommitRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationPrecommitRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryDelegateAddressRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryAllocationPrecommitRequest proto.InternalMessageInfo -func (m *QueryDelegateAddressRequest) GetValidator() string { +func (m *QueryAllocationPrecommitRequest) GetValidator() string { if m != nil { return m.Validator } return "" } -// QueryDelegateAddressResponse is the response type for the Query/QueryDelegateAddress gRPC method. -type QueryDelegateAddressResponse struct { - // delegate account address - Delegate string `protobuf:"bytes,2,opt,name=delegate,proto3" json:"delegate,omitempty"` +func (m *QueryAllocationPrecommitRequest) GetCellar() string { + if m != nil { + return m.Cellar + } + return "" +} + +// QueryAllocationPrecommitResponse is the response type for the Query/AllocationPrecommit gRPC method. +type QueryAllocationPrecommitResponse struct { + // prevote submitted within the latest voting period + Precommit *AllocationPrecommit `protobuf:"bytes,1,opt,name=precommit,proto3" json:"precommit,omitempty"` } -func (m *QueryDelegateAddressResponse) Reset() { *m = QueryDelegateAddressResponse{} } -func (m *QueryDelegateAddressResponse) String() string { return proto.CompactTextString(m) } -func (*QueryDelegateAddressResponse) ProtoMessage() {} -func (*QueryDelegateAddressResponse) Descriptor() ([]byte, []int) { +func (m *QueryAllocationPrecommitResponse) Reset() { *m = QueryAllocationPrecommitResponse{} } +func (m *QueryAllocationPrecommitResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationPrecommitResponse) ProtoMessage() {} +func (*QueryAllocationPrecommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{3} } -func (m *QueryDelegateAddressResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationPrecommitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryDelegateAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationPrecommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryDelegateAddressResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationPrecommitResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -188,43 +197,41 @@ func (m *QueryDelegateAddressResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryDelegateAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryDelegateAddressResponse.Merge(m, src) +func (m *QueryAllocationPrecommitResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationPrecommitResponse.Merge(m, src) } -func (m *QueryDelegateAddressResponse) XXX_Size() int { +func (m *QueryAllocationPrecommitResponse) XXX_Size() int { return m.Size() } -func (m *QueryDelegateAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryDelegateAddressResponse.DiscardUnknown(m) +func (m *QueryAllocationPrecommitResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationPrecommitResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryDelegateAddressResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryAllocationPrecommitResponse proto.InternalMessageInfo -func (m *QueryDelegateAddressResponse) GetDelegate() string { +func (m *QueryAllocationPrecommitResponse) GetPrecommit() *AllocationPrecommit { if m != nil { - return m.Delegate + return m.Precommit } - return "" + return nil } -// QueryValidatorAddressRequest is the request type for the Query/Params gRPC method. -type QueryValidatorAddressRequest struct { - // delegate account address - Delegate string `protobuf:"bytes,1,opt,name=delegate,proto3" json:"delegate,omitempty"` +// QueryAllocationPrecommitsRequest is the request type for the Query/AllocationPrecommits gRPC method. +type QueryAllocationPrecommitsRequest struct { } -func (m *QueryValidatorAddressRequest) Reset() { *m = QueryValidatorAddressRequest{} } -func (m *QueryValidatorAddressRequest) String() string { return proto.CompactTextString(m) } -func (*QueryValidatorAddressRequest) ProtoMessage() {} -func (*QueryValidatorAddressRequest) Descriptor() ([]byte, []int) { +func (m *QueryAllocationPrecommitsRequest) Reset() { *m = QueryAllocationPrecommitsRequest{} } +func (m *QueryAllocationPrecommitsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationPrecommitsRequest) ProtoMessage() {} +func (*QueryAllocationPrecommitsRequest) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{4} } -func (m *QueryValidatorAddressRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationPrecommitsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryValidatorAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationPrecommitsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryValidatorAddressRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationPrecommitsRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -234,43 +241,36 @@ func (m *QueryValidatorAddressRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryValidatorAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryValidatorAddressRequest.Merge(m, src) +func (m *QueryAllocationPrecommitsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationPrecommitsRequest.Merge(m, src) } -func (m *QueryValidatorAddressRequest) XXX_Size() int { +func (m *QueryAllocationPrecommitsRequest) XXX_Size() int { return m.Size() } -func (m *QueryValidatorAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryValidatorAddressRequest.DiscardUnknown(m) +func (m *QueryAllocationPrecommitsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationPrecommitsRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryValidatorAddressRequest proto.InternalMessageInfo - -func (m *QueryValidatorAddressRequest) GetDelegate() string { - if m != nil { - return m.Delegate - } - return "" -} +var xxx_messageInfo_QueryAllocationPrecommitsRequest proto.InternalMessageInfo -// QueryValidatorAddressResponse is the response type for the Query/Params gRPC method. -type QueryValidatorAddressResponse struct { - // validator operator address - Validator string `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` +// QueryAllocationPrecommitResponse is the response type for the Query/AllocationPrecommits gRPC method. +type QueryAllocationPrecommitsResponse struct { + // prevote submitted within the latest voting period + Precommits []*AllocationPrecommit `protobuf:"bytes,1,rep,name=precommits,proto3" json:"precommits,omitempty"` } -func (m *QueryValidatorAddressResponse) Reset() { *m = QueryValidatorAddressResponse{} } -func (m *QueryValidatorAddressResponse) String() string { return proto.CompactTextString(m) } -func (*QueryValidatorAddressResponse) ProtoMessage() {} -func (*QueryValidatorAddressResponse) Descriptor() ([]byte, []int) { +func (m *QueryAllocationPrecommitsResponse) Reset() { *m = QueryAllocationPrecommitsResponse{} } +func (m *QueryAllocationPrecommitsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationPrecommitsResponse) ProtoMessage() {} +func (*QueryAllocationPrecommitsResponse) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{5} } -func (m *QueryValidatorAddressResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationPrecommitsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryValidatorAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationPrecommitsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryValidatorAddressResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationPrecommitsResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -280,45 +280,45 @@ func (m *QueryValidatorAddressResponse) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *QueryValidatorAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryValidatorAddressResponse.Merge(m, src) +func (m *QueryAllocationPrecommitsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationPrecommitsResponse.Merge(m, src) } -func (m *QueryValidatorAddressResponse) XXX_Size() int { +func (m *QueryAllocationPrecommitsResponse) XXX_Size() int { return m.Size() } -func (m *QueryValidatorAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryValidatorAddressResponse.DiscardUnknown(m) +func (m *QueryAllocationPrecommitsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationPrecommitsResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryValidatorAddressResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryAllocationPrecommitsResponse proto.InternalMessageInfo -func (m *QueryValidatorAddressResponse) GetValidator() string { +func (m *QueryAllocationPrecommitsResponse) GetPrecommits() []*AllocationPrecommit { if m != nil { - return m.Validator + return m.Precommits } - return "" + return nil } -// QueryAllocationPrecommitRequest is the request type for the Query/AllocationPrecommit gRPC method. -type QueryAllocationPrecommitRequest struct { +// QueryAllocationCommitRequest is the request type for the Query/QueryallocationDataVote gRPC method. +type QueryAllocationCommitRequest struct { // validator operator address Validator string `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` // cellar contract address Cellar string `protobuf:"bytes,2,opt,name=cellar,proto3" json:"cellar,omitempty"` } -func (m *QueryAllocationPrecommitRequest) Reset() { *m = QueryAllocationPrecommitRequest{} } -func (m *QueryAllocationPrecommitRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllocationPrecommitRequest) ProtoMessage() {} -func (*QueryAllocationPrecommitRequest) Descriptor() ([]byte, []int) { +func (m *QueryAllocationCommitRequest) Reset() { *m = QueryAllocationCommitRequest{} } +func (m *QueryAllocationCommitRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationCommitRequest) ProtoMessage() {} +func (*QueryAllocationCommitRequest) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{6} } -func (m *QueryAllocationPrecommitRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationCommitRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllocationPrecommitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationCommitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllocationPrecommitRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationCommitRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -328,50 +328,50 @@ func (m *QueryAllocationPrecommitRequest) XXX_Marshal(b []byte, deterministic bo return b[:n], nil } } -func (m *QueryAllocationPrecommitRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllocationPrecommitRequest.Merge(m, src) +func (m *QueryAllocationCommitRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationCommitRequest.Merge(m, src) } -func (m *QueryAllocationPrecommitRequest) XXX_Size() int { +func (m *QueryAllocationCommitRequest) XXX_Size() int { return m.Size() } -func (m *QueryAllocationPrecommitRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllocationPrecommitRequest.DiscardUnknown(m) +func (m *QueryAllocationCommitRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationCommitRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllocationPrecommitRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryAllocationCommitRequest proto.InternalMessageInfo -func (m *QueryAllocationPrecommitRequest) GetValidator() string { +func (m *QueryAllocationCommitRequest) GetValidator() string { if m != nil { return m.Validator } return "" } -func (m *QueryAllocationPrecommitRequest) GetCellar() string { +func (m *QueryAllocationCommitRequest) GetCellar() string { if m != nil { return m.Cellar } return "" } -// QueryAllocationPrecommitResponse is the response type for the Query/QueryallocationDataPrevote gRPC method. -type QueryAllocationPrecommitResponse struct { - // prevote submitted within the latest voting period - Precommit *AllocationPrecommit `protobuf:"bytes,1,opt,name=precommit,proto3" json:"precommit,omitempty"` +// QueryAllocationCommitResponse is the response type for the Query/QueryallocationDataVote gRPC method. +type QueryAllocationCommitResponse struct { + // vote containing the allocation feed submitted within the latest voting period + Commit *Allocation `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"` } -func (m *QueryAllocationPrecommitResponse) Reset() { *m = QueryAllocationPrecommitResponse{} } -func (m *QueryAllocationPrecommitResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllocationPrecommitResponse) ProtoMessage() {} -func (*QueryAllocationPrecommitResponse) Descriptor() ([]byte, []int) { +func (m *QueryAllocationCommitResponse) Reset() { *m = QueryAllocationCommitResponse{} } +func (m *QueryAllocationCommitResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationCommitResponse) ProtoMessage() {} +func (*QueryAllocationCommitResponse) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{7} } -func (m *QueryAllocationPrecommitResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationCommitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllocationPrecommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationCommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllocationPrecommitResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationCommitResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -381,45 +381,41 @@ func (m *QueryAllocationPrecommitResponse) XXX_Marshal(b []byte, deterministic b return b[:n], nil } } -func (m *QueryAllocationPrecommitResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllocationPrecommitResponse.Merge(m, src) +func (m *QueryAllocationCommitResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationCommitResponse.Merge(m, src) } -func (m *QueryAllocationPrecommitResponse) XXX_Size() int { +func (m *QueryAllocationCommitResponse) XXX_Size() int { return m.Size() } -func (m *QueryAllocationPrecommitResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllocationPrecommitResponse.DiscardUnknown(m) +func (m *QueryAllocationCommitResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationCommitResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllocationPrecommitResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryAllocationCommitResponse proto.InternalMessageInfo -func (m *QueryAllocationPrecommitResponse) GetPrecommit() *AllocationPrecommit { +func (m *QueryAllocationCommitResponse) GetCommit() *Allocation { if m != nil { - return m.Precommit + return m.Commit } return nil } -// QueryAllocationCommitRequest is the request type for the Query/QueryallocationDataVote gRPC method. -type QueryAllocationCommitRequest struct { - // validator operator address - Validator string `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` - // cellar contract address - Cellar string `protobuf:"bytes,2,opt,name=cellar,proto3" json:"cellar,omitempty"` +// QueryAllocationCommitsRequest is the request type for the Query/QueryAllocationCommits gRPC method. +type QueryAllocationCommitsRequest struct { } -func (m *QueryAllocationCommitRequest) Reset() { *m = QueryAllocationCommitRequest{} } -func (m *QueryAllocationCommitRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllocationCommitRequest) ProtoMessage() {} -func (*QueryAllocationCommitRequest) Descriptor() ([]byte, []int) { +func (m *QueryAllocationCommitsRequest) Reset() { *m = QueryAllocationCommitsRequest{} } +func (m *QueryAllocationCommitsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationCommitsRequest) ProtoMessage() {} +func (*QueryAllocationCommitsRequest) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{8} } -func (m *QueryAllocationCommitRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationCommitsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllocationCommitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationCommitsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllocationCommitRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationCommitsRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -429,50 +425,36 @@ func (m *QueryAllocationCommitRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryAllocationCommitRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllocationCommitRequest.Merge(m, src) +func (m *QueryAllocationCommitsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationCommitsRequest.Merge(m, src) } -func (m *QueryAllocationCommitRequest) XXX_Size() int { +func (m *QueryAllocationCommitsRequest) XXX_Size() int { return m.Size() } -func (m *QueryAllocationCommitRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllocationCommitRequest.DiscardUnknown(m) +func (m *QueryAllocationCommitsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationCommitsRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllocationCommitRequest proto.InternalMessageInfo - -func (m *QueryAllocationCommitRequest) GetValidator() string { - if m != nil { - return m.Validator - } - return "" -} +var xxx_messageInfo_QueryAllocationCommitsRequest proto.InternalMessageInfo -func (m *QueryAllocationCommitRequest) GetCellar() string { - if m != nil { - return m.Cellar - } - return "" +// QueryAllocationCommitsResponse is the response type for the Query/QueryAllocationCommits gRPC method. +type QueryAllocationCommitsResponse struct { + // votes containing the allocation feed submitted within the latest voting period + Commits []*Allocation `protobuf:"bytes,1,rep,name=commits,proto3" json:"commits,omitempty"` } -// QueryAllocationCommitResponse is the response type for the Query/QueryallocationDataVote gRPC method. -type QueryAllocationCommitResponse struct { - // vote containing the allocation feed submitted within the latest voting period - Commit *Allocation `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"` -} - -func (m *QueryAllocationCommitResponse) Reset() { *m = QueryAllocationCommitResponse{} } -func (m *QueryAllocationCommitResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllocationCommitResponse) ProtoMessage() {} -func (*QueryAllocationCommitResponse) Descriptor() ([]byte, []int) { +func (m *QueryAllocationCommitsResponse) Reset() { *m = QueryAllocationCommitsResponse{} } +func (m *QueryAllocationCommitsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllocationCommitsResponse) ProtoMessage() {} +func (*QueryAllocationCommitsResponse) Descriptor() ([]byte, []int) { return fileDescriptor_b27a95d8c59345b2, []int{9} } -func (m *QueryAllocationCommitResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryAllocationCommitsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryAllocationCommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryAllocationCommitsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryAllocationCommitResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryAllocationCommitsResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -482,26 +464,26 @@ func (m *QueryAllocationCommitResponse) XXX_Marshal(b []byte, deterministic bool return b[:n], nil } } -func (m *QueryAllocationCommitResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllocationCommitResponse.Merge(m, src) +func (m *QueryAllocationCommitsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllocationCommitsResponse.Merge(m, src) } -func (m *QueryAllocationCommitResponse) XXX_Size() int { +func (m *QueryAllocationCommitsResponse) XXX_Size() int { return m.Size() } -func (m *QueryAllocationCommitResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllocationCommitResponse.DiscardUnknown(m) +func (m *QueryAllocationCommitsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllocationCommitsResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryAllocationCommitResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryAllocationCommitsResponse proto.InternalMessageInfo -func (m *QueryAllocationCommitResponse) GetCommit() *Allocation { +func (m *QueryAllocationCommitsResponse) GetCommits() []*Allocation { if m != nil { - return m.Commit + return m.Commits } return nil } -// QueryCommitPeriodRequest is the request type for the Query/VotePeriod gRPC method. +// QueryCommitPeriodRequest is the request type for the Query/QueryCommitPeriod gRPC method. type QueryCommitPeriodRequest struct { } @@ -538,7 +520,7 @@ func (m *QueryCommitPeriodRequest) XXX_DiscardUnknown() { var xxx_messageInfo_QueryCommitPeriodRequest proto.InternalMessageInfo -// QueryCommitPeriodResponse is the response type for the Query/VotePeriod gRPC method. +// QueryCommitPeriodResponse is the response type for the Query/QueryCommitPeriod gRPC method. type QueryCommitPeriodResponse struct { // block height at which the query was processed CurrentHeight int64 `protobuf:"varint,1,opt,name=current_height,json=currentHeight,proto3" json:"current_height,omitempty"` @@ -602,71 +584,157 @@ func (m *QueryCommitPeriodResponse) GetVotePeriodEnd() int64 { return 0 } +// QueryCellarsRequest is the request type for Query/QueryCellars gRPC method. +type QueryCellarsRequest struct { +} + +func (m *QueryCellarsRequest) Reset() { *m = QueryCellarsRequest{} } +func (m *QueryCellarsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryCellarsRequest) ProtoMessage() {} +func (*QueryCellarsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_b27a95d8c59345b2, []int{12} +} +func (m *QueryCellarsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryCellarsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryCellarsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryCellarsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCellarsRequest.Merge(m, src) +} +func (m *QueryCellarsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryCellarsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCellarsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryCellarsRequest proto.InternalMessageInfo + +// QueryCellarsResponse is the response type for Query/QueryCellars gRPC method. +type QueryCellarsResponse struct { + Cellars []*Cellar `protobuf:"bytes,1,rep,name=cellars,proto3" json:"cellars,omitempty"` +} + +func (m *QueryCellarsResponse) Reset() { *m = QueryCellarsResponse{} } +func (m *QueryCellarsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryCellarsResponse) ProtoMessage() {} +func (*QueryCellarsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_b27a95d8c59345b2, []int{13} +} +func (m *QueryCellarsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryCellarsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryCellarsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryCellarsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCellarsResponse.Merge(m, src) +} +func (m *QueryCellarsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryCellarsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCellarsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryCellarsResponse proto.InternalMessageInfo + +func (m *QueryCellarsResponse) GetCellars() []*Cellar { + if m != nil { + return m.Cellars + } + return nil +} + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "allocation.v1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "allocation.v1.QueryParamsResponse") - proto.RegisterType((*QueryDelegateAddressRequest)(nil), "allocation.v1.QueryDelegateAddressRequest") - proto.RegisterType((*QueryDelegateAddressResponse)(nil), "allocation.v1.QueryDelegateAddressResponse") - proto.RegisterType((*QueryValidatorAddressRequest)(nil), "allocation.v1.QueryValidatorAddressRequest") - proto.RegisterType((*QueryValidatorAddressResponse)(nil), "allocation.v1.QueryValidatorAddressResponse") proto.RegisterType((*QueryAllocationPrecommitRequest)(nil), "allocation.v1.QueryAllocationPrecommitRequest") proto.RegisterType((*QueryAllocationPrecommitResponse)(nil), "allocation.v1.QueryAllocationPrecommitResponse") + proto.RegisterType((*QueryAllocationPrecommitsRequest)(nil), "allocation.v1.QueryAllocationPrecommitsRequest") + proto.RegisterType((*QueryAllocationPrecommitsResponse)(nil), "allocation.v1.QueryAllocationPrecommitsResponse") proto.RegisterType((*QueryAllocationCommitRequest)(nil), "allocation.v1.QueryAllocationCommitRequest") proto.RegisterType((*QueryAllocationCommitResponse)(nil), "allocation.v1.QueryAllocationCommitResponse") + proto.RegisterType((*QueryAllocationCommitsRequest)(nil), "allocation.v1.QueryAllocationCommitsRequest") + proto.RegisterType((*QueryAllocationCommitsResponse)(nil), "allocation.v1.QueryAllocationCommitsResponse") proto.RegisterType((*QueryCommitPeriodRequest)(nil), "allocation.v1.QueryCommitPeriodRequest") proto.RegisterType((*QueryCommitPeriodResponse)(nil), "allocation.v1.QueryCommitPeriodResponse") + proto.RegisterType((*QueryCellarsRequest)(nil), "allocation.v1.QueryCellarsRequest") + proto.RegisterType((*QueryCellarsResponse)(nil), "allocation.v1.QueryCellarsResponse") } func init() { proto.RegisterFile("allocation/v1/query.proto", fileDescriptor_b27a95d8c59345b2) } var fileDescriptor_b27a95d8c59345b2 = []byte{ - // 726 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0xd1, 0x4e, 0x13, 0x4d, - 0x14, 0xee, 0xc2, 0xff, 0x57, 0x19, 0x82, 0x84, 0x11, 0x4c, 0xbb, 0x60, 0x81, 0x4d, 0x04, 0x82, - 0x64, 0xc7, 0x82, 0xd1, 0x44, 0x63, 0x22, 0xa8, 0x89, 0x7a, 0x85, 0xab, 0xd1, 0xc4, 0x9b, 0x66, - 0xda, 0x9d, 0x2c, 0x6b, 0x76, 0x77, 0x96, 0x9d, 0x69, 0x23, 0x21, 0xdc, 0xf8, 0x04, 0x26, 0x26, - 0xbc, 0x82, 0xc6, 0x6b, 0x1f, 0x82, 0x4b, 0x12, 0x6f, 0xb8, 0x32, 0x06, 0x7c, 0x10, 0xd3, 0x99, - 0xd9, 0x76, 0xb7, 0xcc, 0x42, 0x2f, 0xbc, 0xeb, 0x9c, 0xf3, 0x9d, 0xef, 0x7c, 0xe7, 0xec, 0x7c, - 0x53, 0x50, 0xc5, 0x41, 0x40, 0x5b, 0x98, 0xfb, 0x34, 0x42, 0x9d, 0x3a, 0xda, 0x6d, 0x93, 0x64, - 0xcf, 0x8e, 0x13, 0xca, 0x29, 0x9c, 0xe8, 0xa7, 0xec, 0x4e, 0xdd, 0x9c, 0xf6, 0xa8, 0x47, 0x45, - 0x06, 0x75, 0x7f, 0x49, 0x90, 0x39, 0xe7, 0x51, 0xea, 0x05, 0x04, 0xe1, 0xd8, 0x47, 0x38, 0x8a, - 0x28, 0x17, 0x78, 0xa6, 0xb2, 0xb3, 0x79, 0x76, 0x8f, 0x44, 0x84, 0xf9, 0x69, 0xb2, 0x96, 0x4f, - 0x66, 0xba, 0xc9, 0x7c, 0xb5, 0x45, 0x59, 0x48, 0x59, 0x43, 0xf6, 0x94, 0x07, 0x95, 0x5a, 0x95, - 0x27, 0xd4, 0xc4, 0x8c, 0x48, 0xcd, 0xa8, 0x53, 0x6f, 0x12, 0x8e, 0xeb, 0x28, 0xc6, 0x9e, 0x1f, - 0x65, 0x68, 0xac, 0x69, 0x00, 0x5f, 0x75, 0x11, 0xdb, 0x38, 0xc1, 0x21, 0x73, 0xc8, 0x6e, 0x9b, - 0x30, 0x6e, 0xbd, 0x04, 0xd7, 0x73, 0x51, 0x16, 0xd3, 0x88, 0x11, 0xb8, 0x01, 0xca, 0xb1, 0x88, - 0x54, 0x8c, 0x05, 0x63, 0x65, 0x7c, 0x7d, 0xc6, 0xce, 0x2d, 0xc1, 0x96, 0xf0, 0xad, 0xff, 0x8e, - 0x7e, 0xcd, 0x97, 0x1c, 0x05, 0xb5, 0x1e, 0x82, 0x59, 0xc1, 0xf5, 0x94, 0x04, 0xc4, 0xc3, 0x9c, - 0x6c, 0xba, 0x6e, 0x42, 0x58, 0xda, 0x0a, 0xce, 0x81, 0xb1, 0x0e, 0x0e, 0x7c, 0x17, 0x73, 0x9a, - 0x08, 0xda, 0x31, 0xa7, 0x1f, 0xb0, 0x1e, 0x80, 0x39, 0x7d, 0xb1, 0x52, 0x64, 0x82, 0xab, 0xae, - 0x4a, 0x55, 0x46, 0x44, 0x71, 0xef, 0xdc, 0xab, 0x7d, 0x9b, 0xb2, 0x0d, 0x74, 0xce, 0xd6, 0x1a, - 0x03, 0xb5, 0x8f, 0xc0, 0xcd, 0x82, 0x5a, 0xd5, 0xf8, 0x62, 0xd9, 0xef, 0xc0, 0xbc, 0x28, 0xdf, - 0xec, 0xad, 0x67, 0x3b, 0x21, 0x2d, 0x1a, 0x86, 0x3e, 0x1f, 0x6a, 0x6e, 0x78, 0x03, 0x94, 0x5b, - 0x24, 0x08, 0x70, 0xa2, 0xa6, 0x52, 0x27, 0xcb, 0x05, 0x0b, 0xc5, 0xc4, 0x4a, 0xda, 0x63, 0x30, - 0x16, 0xa7, 0x41, 0xf5, 0xa1, 0xac, 0x81, 0x0f, 0xa5, 0x2b, 0xef, 0x17, 0x59, 0x6f, 0xd4, 0xe6, - 0xfa, 0xb0, 0x27, 0xff, 0x40, 0xbb, 0xa3, 0x76, 0x7a, 0x9e, 0x55, 0x09, 0xaf, 0x83, 0x72, 0x4e, - 0x75, 0xb5, 0x50, 0xb5, 0xa3, 0x80, 0x96, 0x09, 0x2a, 0x82, 0x53, 0x32, 0x6d, 0x93, 0xc4, 0xa7, - 0x6e, 0x7a, 0x89, 0x0f, 0x0d, 0x50, 0xd5, 0x24, 0x55, 0xb3, 0x5b, 0xe0, 0x5a, 0xab, 0x9d, 0x24, - 0x24, 0xe2, 0x8d, 0x1d, 0xe2, 0x7b, 0x3b, 0xb2, 0xe9, 0xa8, 0x33, 0xa1, 0xa2, 0xcf, 0x45, 0x10, - 0xae, 0x82, 0xa9, 0x0e, 0xe5, 0xa4, 0x11, 0x8b, 0xea, 0x06, 0xe3, 0x38, 0xe1, 0x62, 0xae, 0x51, - 0x67, 0xb2, 0x9b, 0x90, 0xac, 0xaf, 0xbb, 0x61, 0xb8, 0x04, 0x26, 0xb3, 0x58, 0x12, 0xb9, 0x95, - 0x51, 0xc9, 0xd9, 0x47, 0x3e, 0x8b, 0xdc, 0xf5, 0x93, 0x2b, 0xe0, 0x7f, 0x21, 0x0c, 0x1e, 0x80, - 0xf1, 0x8c, 0xcf, 0xe0, 0xe2, 0xc0, 0xc0, 0xe7, 0x9d, 0x69, 0x5a, 0x17, 0x41, 0xe4, 0x68, 0xd6, - 0xf2, 0xa7, 0x9f, 0x7f, 0xbe, 0x8c, 0x2c, 0xc2, 0x79, 0xc4, 0x68, 0x18, 0x92, 0xc0, 0x27, 0x09, - 0xca, 0xbf, 0x26, 0xd2, 0x9a, 0xf0, 0xab, 0x01, 0xa6, 0x75, 0xf6, 0x82, 0xab, 0xba, 0x2e, 0x7a, - 0x03, 0x9b, 0xb7, 0x87, 0xc2, 0x2a, 0x69, 0xf7, 0x84, 0xb4, 0x3b, 0xd0, 0x2e, 0x94, 0x96, 0x5a, - 0x90, 0xa1, 0xfd, 0xde, 0x95, 0x3a, 0x80, 0xdf, 0x0d, 0x30, 0xa3, 0x35, 0x24, 0xd4, 0xb6, 0x2f, - 0xb0, 0xbc, 0xb9, 0x36, 0x1c, 0x78, 0x68, 0xb1, 0x3d, 0x85, 0x0c, 0xed, 0xa7, 0xc2, 0x0f, 0xe0, - 0x0f, 0x43, 0xdd, 0x4a, 0x8d, 0xcd, 0xa0, 0xad, 0x93, 0x50, 0xfc, 0x4e, 0x98, 0x68, 0x68, 0xbc, - 0x52, 0x7d, 0x5f, 0xa8, 0xae, 0x43, 0x54, 0xfc, 0xf5, 0xd3, 0x9a, 0xfc, 0x8e, 0xbf, 0xa5, 0x3b, - 0x1e, 0x34, 0xa8, 0x7e, 0xc7, 0x05, 0x8f, 0x83, 0x7e, 0xc7, 0x45, 0x9e, 0xb7, 0xee, 0x0a, 0xb5, - 0x36, 0x5c, 0x2b, 0x54, 0xab, 0x93, 0x7a, 0x68, 0x80, 0xa9, 0x73, 0xd6, 0x86, 0xcb, 0xba, 0xce, - 0x9a, 0x97, 0xc1, 0x5c, 0xb9, 0x1c, 0xa8, 0xe4, 0xd9, 0x42, 0xde, 0x0a, 0x5c, 0xba, 0x44, 0x9e, - 0xf2, 0xfc, 0xd6, 0x8b, 0xa3, 0xd3, 0x9a, 0x71, 0x7c, 0x5a, 0x33, 0x7e, 0x9f, 0xd6, 0x8c, 0xcf, - 0x67, 0xb5, 0xd2, 0xf1, 0x59, 0xad, 0x74, 0x72, 0x56, 0x2b, 0xbd, 0x47, 0x9e, 0xcf, 0x77, 0xda, - 0x4d, 0xbb, 0x45, 0x43, 0x14, 0x13, 0xcf, 0xdb, 0xfb, 0xd0, 0xc9, 0x70, 0x7e, 0xcc, 0xb2, 0xf2, - 0xbd, 0x98, 0xb0, 0x66, 0x59, 0xfc, 0x41, 0x6f, 0xfc, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x59, 0xbd, - 0x3b, 0xa1, 0x84, 0x08, 0x00, 0x00, + // 768 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x4f, 0x13, 0x41, + 0x14, 0xef, 0x52, 0x2d, 0xf2, 0x10, 0x09, 0x23, 0x90, 0x76, 0xc5, 0x2d, 0x0c, 0x01, 0x1a, 0xd0, + 0x8e, 0x85, 0x18, 0x8d, 0x89, 0x09, 0x42, 0x8c, 0x7f, 0x4e, 0xb8, 0x6a, 0x4c, 0xbc, 0x34, 0xdb, + 0x76, 0xb2, 0xac, 0x69, 0x77, 0x96, 0xdd, 0x6d, 0x23, 0x21, 0x1c, 0xf4, 0x13, 0x98, 0x98, 0x70, + 0xf5, 0x03, 0x78, 0xf2, 0x03, 0x78, 0xe7, 0x48, 0xe2, 0xc5, 0x93, 0x31, 0x60, 0xe2, 0xd7, 0x30, + 0x9d, 0x99, 0x6e, 0x77, 0xcb, 0x6e, 0xd9, 0x83, 0xb7, 0xee, 0x7b, 0xbf, 0xf7, 0x7b, 0xbf, 0xf9, + 0xcd, 0xbc, 0x97, 0x42, 0xc1, 0x68, 0x36, 0x59, 0xdd, 0xf0, 0x2d, 0x66, 0x93, 0x4e, 0x85, 0xec, + 0xb5, 0xa9, 0xbb, 0x5f, 0x76, 0x5c, 0xe6, 0x33, 0x34, 0xd1, 0x4f, 0x95, 0x3b, 0x15, 0x75, 0xda, + 0x64, 0x26, 0xe3, 0x19, 0xd2, 0xfd, 0x25, 0x40, 0xea, 0x9c, 0xc9, 0x98, 0xd9, 0xa4, 0xc4, 0x70, + 0x2c, 0x62, 0xd8, 0x36, 0xf3, 0x39, 0xde, 0x93, 0xd9, 0x1b, 0x51, 0x76, 0x93, 0xda, 0xd4, 0xb3, + 0x7a, 0x49, 0x2d, 0x9a, 0x0c, 0x75, 0x13, 0xf9, 0x42, 0x9d, 0x79, 0x2d, 0xe6, 0x55, 0x45, 0x4f, + 0xf1, 0x21, 0x53, 0xab, 0xe2, 0x8b, 0xd4, 0x0c, 0x8f, 0x0a, 0xcd, 0xa4, 0x53, 0xa9, 0x51, 0xdf, + 0xa8, 0x10, 0xc7, 0x30, 0x2d, 0x3b, 0x44, 0x83, 0xa7, 0x01, 0xbd, 0xe8, 0x22, 0x76, 0x0c, 0xd7, + 0x68, 0x79, 0x3a, 0xdd, 0x6b, 0x53, 0xcf, 0xc7, 0xcf, 0xe1, 0x7a, 0x24, 0xea, 0x39, 0xcc, 0xf6, + 0x28, 0xda, 0x80, 0x9c, 0xc3, 0x23, 0x79, 0x65, 0x5e, 0x29, 0x8d, 0xaf, 0xcf, 0x94, 0x23, 0x26, + 0x94, 0x05, 0x7c, 0xeb, 0xd2, 0xf1, 0xaf, 0x62, 0x46, 0x97, 0x50, 0xfc, 0x06, 0x8a, 0x9c, 0xeb, + 0x51, 0x00, 0xdd, 0x71, 0x69, 0x9d, 0xb5, 0x5a, 0x96, 0x2f, 0xdb, 0xa1, 0x39, 0x18, 0xeb, 0x18, + 0x4d, 0xab, 0x61, 0xf8, 0xcc, 0xe5, 0xd4, 0x63, 0x7a, 0x3f, 0x80, 0x66, 0x21, 0x57, 0xa7, 0xcd, + 0xa6, 0xe1, 0xe6, 0x47, 0x78, 0x4a, 0x7e, 0xe1, 0x06, 0xcc, 0x27, 0x13, 0x4b, 0xc5, 0x9b, 0x30, + 0xe6, 0xf4, 0x82, 0x52, 0x34, 0x1e, 0x10, 0x1d, 0x57, 0xde, 0x2f, 0xc2, 0x38, 0xb9, 0x4b, 0x60, + 0x97, 0x09, 0x0b, 0x43, 0x30, 0x52, 0xca, 0x16, 0x40, 0xc0, 0xda, 0x35, 0x30, 0x9b, 0x52, 0x4b, + 0xa8, 0x0a, 0xbf, 0x82, 0xb9, 0x81, 0x46, 0xdb, 0xff, 0xc1, 0x48, 0x1d, 0x6e, 0x26, 0xb0, 0x4a, + 0xe9, 0x15, 0xc8, 0x45, 0x2c, 0x2c, 0x24, 0xca, 0xd6, 0x25, 0x10, 0x17, 0x13, 0x38, 0x03, 0xcf, + 0x5e, 0x83, 0x96, 0x04, 0x08, 0x5e, 0xdb, 0x68, 0xd4, 0xad, 0x21, 0x6d, 0x7b, 0x48, 0xac, 0x42, + 0x9e, 0xd3, 0x0a, 0xb2, 0x1d, 0xea, 0x5a, 0xac, 0xd1, 0x6b, 0x79, 0xa4, 0x40, 0x21, 0x26, 0x29, + 0xdb, 0x2d, 0xc1, 0xb5, 0x7a, 0xdb, 0x75, 0xa9, 0xed, 0x57, 0x77, 0xa9, 0x65, 0xee, 0x8a, 0xc3, + 0x66, 0xf5, 0x09, 0x19, 0x7d, 0xca, 0x83, 0x68, 0x15, 0xa6, 0x3a, 0xcc, 0xa7, 0x55, 0x87, 0x57, + 0x57, 0x3d, 0xdf, 0x70, 0x7d, 0xee, 0x67, 0x56, 0x9f, 0xec, 0x26, 0x04, 0xeb, 0xcb, 0x6e, 0x18, + 0x2d, 0xc3, 0x64, 0x18, 0x4b, 0xed, 0x46, 0x3e, 0x2b, 0x38, 0xfb, 0xc8, 0xc7, 0x76, 0x03, 0xcf, + 0xc8, 0x71, 0xdb, 0xe6, 0xf7, 0x11, 0x58, 0xf4, 0x04, 0xa6, 0xa3, 0x61, 0xa9, 0x94, 0xc0, 0xa8, + 0xb8, 0xb9, 0x9e, 0x31, 0x83, 0x73, 0x28, 0x0a, 0xf4, 0x1e, 0x6a, 0xfd, 0xef, 0x15, 0xb8, 0xcc, + 0x99, 0xd0, 0x21, 0x8c, 0x87, 0x06, 0x1b, 0x2d, 0x0c, 0x14, 0x9e, 0x5f, 0x05, 0x2a, 0x1e, 0x06, + 0x11, 0x82, 0xf0, 0xca, 0xc7, 0x1f, 0x7f, 0x3e, 0x8f, 0x2c, 0xa0, 0x22, 0xf1, 0x58, 0xab, 0x45, + 0x9b, 0x16, 0x75, 0x49, 0x74, 0x7d, 0x89, 0x5d, 0x80, 0xbe, 0x2b, 0xf2, 0x7a, 0x62, 0x1e, 0x3a, + 0x2a, 0xc7, 0x75, 0x4a, 0xde, 0x1a, 0x2a, 0x49, 0x8d, 0x97, 0x32, 0x37, 0xb9, 0xcc, 0x07, 0xe8, + 0x7e, 0xb2, 0xcc, 0x60, 0xd4, 0xc8, 0x41, 0x30, 0x37, 0x87, 0xe4, 0x40, 0x18, 0x79, 0x88, 0xbe, + 0xf6, 0x5e, 0x50, 0xdc, 0xa4, 0xa3, 0xb4, 0x82, 0x02, 0x6f, 0xef, 0xa4, 0x2f, 0x90, 0x47, 0x58, + 0xe3, 0x47, 0x58, 0x42, 0x8b, 0x29, 0x8e, 0x80, 0xbe, 0x29, 0x30, 0x13, 0x3b, 0x63, 0x68, 0x6d, + 0x78, 0xe3, 0xc8, 0x52, 0x51, 0x6f, 0xa5, 0x03, 0x4b, 0x85, 0x0f, 0xb9, 0xc2, 0x7b, 0xe8, 0x6e, + 0xa2, 0xc2, 0xa1, 0x0e, 0x7f, 0x51, 0x60, 0x36, 0x7e, 0x2f, 0xa0, 0x54, 0x3a, 0x02, 0x6f, 0x6f, + 0xa7, 0x44, 0x4b, 0xd9, 0x25, 0x2e, 0x1b, 0xa3, 0xf9, 0x8b, 0x64, 0xa3, 0x23, 0x05, 0xa6, 0xce, + 0x6d, 0x11, 0xb4, 0x12, 0xd7, 0x2e, 0x66, 0x09, 0xa9, 0xa5, 0x8b, 0x81, 0x52, 0x52, 0x99, 0x4b, + 0x2a, 0xa1, 0xe5, 0x0b, 0x24, 0xc9, 0xf5, 0x82, 0x3e, 0x28, 0x70, 0x35, 0xbc, 0x2f, 0x50, 0xec, + 0xe8, 0x46, 0x77, 0x8c, 0xba, 0x38, 0x14, 0x93, 0xde, 0x1c, 0x51, 0xb1, 0xf5, 0xec, 0xf8, 0x54, + 0x53, 0x4e, 0x4e, 0x35, 0xe5, 0xf7, 0xa9, 0xa6, 0x7c, 0x3a, 0xd3, 0x32, 0x27, 0x67, 0x5a, 0xe6, + 0xe7, 0x99, 0x96, 0x79, 0x4b, 0x4c, 0xcb, 0xdf, 0x6d, 0xd7, 0xca, 0x75, 0xd6, 0x22, 0x0e, 0x35, + 0xcd, 0xfd, 0x77, 0x9d, 0x10, 0xdb, 0xfb, 0x30, 0x9f, 0xbf, 0xef, 0x50, 0xaf, 0x96, 0xe3, 0x7f, + 0x50, 0x36, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x25, 0xf8, 0xe4, 0x84, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -683,16 +751,18 @@ const _ = grpc.SupportPackageIsVersion4 type QueryClient interface { // QueryParams queries the allocation module parameters. QueryParams(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) - // QueryDelegateAddress queries the delegate account address of a validator - QueryDelegateAddress(ctx context.Context, in *QueryDelegateAddressRequest, opts ...grpc.CallOption) (*QueryDelegateAddressResponse, error) - // QueryValidatorAddress returns the validator address of a given delegate - QueryValidatorAddress(ctx context.Context, in *QueryValidatorAddressRequest, opts ...grpc.CallOption) (*QueryValidatorAddressResponse, error) // QueryAllocationPrecommit queries the validator prevote in the current voting period QueryAllocationPrecommit(ctx context.Context, in *QueryAllocationPrecommitRequest, opts ...grpc.CallOption) (*QueryAllocationPrecommitResponse, error) + // QueryAllocationPrecommits queries all allocation precommits in the voting period + QueryAllocationPrecommits(ctx context.Context, in *QueryAllocationPrecommitsRequest, opts ...grpc.CallOption) (*QueryAllocationPrecommitsResponse, error) // QueryAllocationCommit queries the validator vote in the current voting period QueryAllocationCommit(ctx context.Context, in *QueryAllocationCommitRequest, opts ...grpc.CallOption) (*QueryAllocationCommitResponse, error) + // QueryAllocationCommits queries all validator allocation commits + QueryAllocationCommits(ctx context.Context, in *QueryAllocationCommitsRequest, opts ...grpc.CallOption) (*QueryAllocationCommitsResponse, error) // QueryVotePeriod queries the heights for the current voting period (current, start and end) QueryCommitPeriod(ctx context.Context, in *QueryCommitPeriodRequest, opts ...grpc.CallOption) (*QueryCommitPeriodResponse, error) + // QueryCellars returns all cellars and current tick ranges + QueryCellars(ctx context.Context, in *QueryCellarsRequest, opts ...grpc.CallOption) (*QueryCellarsResponse, error) } type queryClient struct { @@ -712,36 +782,36 @@ func (c *queryClient) QueryParams(ctx context.Context, in *QueryParamsRequest, o return out, nil } -func (c *queryClient) QueryDelegateAddress(ctx context.Context, in *QueryDelegateAddressRequest, opts ...grpc.CallOption) (*QueryDelegateAddressResponse, error) { - out := new(QueryDelegateAddressResponse) - err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryDelegateAddress", in, out, opts...) +func (c *queryClient) QueryAllocationPrecommit(ctx context.Context, in *QueryAllocationPrecommitRequest, opts ...grpc.CallOption) (*QueryAllocationPrecommitResponse, error) { + out := new(QueryAllocationPrecommitResponse) + err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryAllocationPrecommit", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *queryClient) QueryValidatorAddress(ctx context.Context, in *QueryValidatorAddressRequest, opts ...grpc.CallOption) (*QueryValidatorAddressResponse, error) { - out := new(QueryValidatorAddressResponse) - err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryValidatorAddress", in, out, opts...) +func (c *queryClient) QueryAllocationPrecommits(ctx context.Context, in *QueryAllocationPrecommitsRequest, opts ...grpc.CallOption) (*QueryAllocationPrecommitsResponse, error) { + out := new(QueryAllocationPrecommitsResponse) + err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryAllocationPrecommits", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *queryClient) QueryAllocationPrecommit(ctx context.Context, in *QueryAllocationPrecommitRequest, opts ...grpc.CallOption) (*QueryAllocationPrecommitResponse, error) { - out := new(QueryAllocationPrecommitResponse) - err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryAllocationPrecommit", in, out, opts...) +func (c *queryClient) QueryAllocationCommit(ctx context.Context, in *QueryAllocationCommitRequest, opts ...grpc.CallOption) (*QueryAllocationCommitResponse, error) { + out := new(QueryAllocationCommitResponse) + err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryAllocationCommit", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *queryClient) QueryAllocationCommit(ctx context.Context, in *QueryAllocationCommitRequest, opts ...grpc.CallOption) (*QueryAllocationCommitResponse, error) { - out := new(QueryAllocationCommitResponse) - err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryAllocationCommit", in, out, opts...) +func (c *queryClient) QueryAllocationCommits(ctx context.Context, in *QueryAllocationCommitsRequest, opts ...grpc.CallOption) (*QueryAllocationCommitsResponse, error) { + out := new(QueryAllocationCommitsResponse) + err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryAllocationCommits", in, out, opts...) if err != nil { return nil, err } @@ -757,20 +827,31 @@ func (c *queryClient) QueryCommitPeriod(ctx context.Context, in *QueryCommitPeri return out, nil } +func (c *queryClient) QueryCellars(ctx context.Context, in *QueryCellarsRequest, opts ...grpc.CallOption) (*QueryCellarsResponse, error) { + out := new(QueryCellarsResponse) + err := c.cc.Invoke(ctx, "/allocation.v1.Query/QueryCellars", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // QueryParams queries the allocation module parameters. QueryParams(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) - // QueryDelegateAddress queries the delegate account address of a validator - QueryDelegateAddress(context.Context, *QueryDelegateAddressRequest) (*QueryDelegateAddressResponse, error) - // QueryValidatorAddress returns the validator address of a given delegate - QueryValidatorAddress(context.Context, *QueryValidatorAddressRequest) (*QueryValidatorAddressResponse, error) // QueryAllocationPrecommit queries the validator prevote in the current voting period QueryAllocationPrecommit(context.Context, *QueryAllocationPrecommitRequest) (*QueryAllocationPrecommitResponse, error) + // QueryAllocationPrecommits queries all allocation precommits in the voting period + QueryAllocationPrecommits(context.Context, *QueryAllocationPrecommitsRequest) (*QueryAllocationPrecommitsResponse, error) // QueryAllocationCommit queries the validator vote in the current voting period QueryAllocationCommit(context.Context, *QueryAllocationCommitRequest) (*QueryAllocationCommitResponse, error) + // QueryAllocationCommits queries all validator allocation commits + QueryAllocationCommits(context.Context, *QueryAllocationCommitsRequest) (*QueryAllocationCommitsResponse, error) // QueryVotePeriod queries the heights for the current voting period (current, start and end) QueryCommitPeriod(context.Context, *QueryCommitPeriodRequest) (*QueryCommitPeriodResponse, error) + // QueryCellars returns all cellars and current tick ranges + QueryCellars(context.Context, *QueryCellarsRequest) (*QueryCellarsResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -780,21 +861,24 @@ type UnimplementedQueryServer struct { func (*UnimplementedQueryServer) QueryParams(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryParams not implemented") } -func (*UnimplementedQueryServer) QueryDelegateAddress(ctx context.Context, req *QueryDelegateAddressRequest) (*QueryDelegateAddressResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method QueryDelegateAddress not implemented") -} -func (*UnimplementedQueryServer) QueryValidatorAddress(ctx context.Context, req *QueryValidatorAddressRequest) (*QueryValidatorAddressResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method QueryValidatorAddress not implemented") -} func (*UnimplementedQueryServer) QueryAllocationPrecommit(ctx context.Context, req *QueryAllocationPrecommitRequest) (*QueryAllocationPrecommitResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryAllocationPrecommit not implemented") } +func (*UnimplementedQueryServer) QueryAllocationPrecommits(ctx context.Context, req *QueryAllocationPrecommitsRequest) (*QueryAllocationPrecommitsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryAllocationPrecommits not implemented") +} func (*UnimplementedQueryServer) QueryAllocationCommit(ctx context.Context, req *QueryAllocationCommitRequest) (*QueryAllocationCommitResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryAllocationCommit not implemented") } +func (*UnimplementedQueryServer) QueryAllocationCommits(ctx context.Context, req *QueryAllocationCommitsRequest) (*QueryAllocationCommitsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryAllocationCommits not implemented") +} func (*UnimplementedQueryServer) QueryCommitPeriod(ctx context.Context, req *QueryCommitPeriodRequest) (*QueryCommitPeriodResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryCommitPeriod not implemented") } +func (*UnimplementedQueryServer) QueryCellars(ctx context.Context, req *QueryCellarsRequest) (*QueryCellarsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryCellars not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -818,74 +902,74 @@ func _Query_QueryParams_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } -func _Query_QueryDelegateAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryDelegateAddressRequest) +func _Query_QueryAllocationPrecommit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllocationPrecommitRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).QueryDelegateAddress(ctx, in) + return srv.(QueryServer).QueryAllocationPrecommit(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/allocation.v1.Query/QueryDelegateAddress", + FullMethod: "/allocation.v1.Query/QueryAllocationPrecommit", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).QueryDelegateAddress(ctx, req.(*QueryDelegateAddressRequest)) + return srv.(QueryServer).QueryAllocationPrecommit(ctx, req.(*QueryAllocationPrecommitRequest)) } return interceptor(ctx, in, info, handler) } -func _Query_QueryValidatorAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryValidatorAddressRequest) +func _Query_QueryAllocationPrecommits_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllocationPrecommitsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).QueryValidatorAddress(ctx, in) + return srv.(QueryServer).QueryAllocationPrecommits(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/allocation.v1.Query/QueryValidatorAddress", + FullMethod: "/allocation.v1.Query/QueryAllocationPrecommits", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).QueryValidatorAddress(ctx, req.(*QueryValidatorAddressRequest)) + return srv.(QueryServer).QueryAllocationPrecommits(ctx, req.(*QueryAllocationPrecommitsRequest)) } return interceptor(ctx, in, info, handler) } -func _Query_QueryAllocationPrecommit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllocationPrecommitRequest) +func _Query_QueryAllocationCommit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllocationCommitRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).QueryAllocationPrecommit(ctx, in) + return srv.(QueryServer).QueryAllocationCommit(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/allocation.v1.Query/QueryAllocationPrecommit", + FullMethod: "/allocation.v1.Query/QueryAllocationCommit", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).QueryAllocationPrecommit(ctx, req.(*QueryAllocationPrecommitRequest)) + return srv.(QueryServer).QueryAllocationCommit(ctx, req.(*QueryAllocationCommitRequest)) } return interceptor(ctx, in, info, handler) } -func _Query_QueryAllocationCommit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllocationCommitRequest) +func _Query_QueryAllocationCommits_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllocationCommitsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).QueryAllocationCommit(ctx, in) + return srv.(QueryServer).QueryAllocationCommits(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/allocation.v1.Query/QueryAllocationCommit", + FullMethod: "/allocation.v1.Query/QueryAllocationCommits", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).QueryAllocationCommit(ctx, req.(*QueryAllocationCommitRequest)) + return srv.(QueryServer).QueryAllocationCommits(ctx, req.(*QueryAllocationCommitsRequest)) } return interceptor(ctx, in, info, handler) } @@ -908,6 +992,24 @@ func _Query_QueryCommitPeriod_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Query_QueryCellars_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCellarsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).QueryCellars(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/allocation.v1.Query/QueryCellars", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).QueryCellars(ctx, req.(*QueryCellarsRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "allocation.v1.Query", HandlerType: (*QueryServer)(nil), @@ -916,26 +1018,30 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "QueryParams", Handler: _Query_QueryParams_Handler, }, - { - MethodName: "QueryDelegateAddress", - Handler: _Query_QueryDelegateAddress_Handler, - }, - { - MethodName: "QueryValidatorAddress", - Handler: _Query_QueryValidatorAddress_Handler, - }, { MethodName: "QueryAllocationPrecommit", Handler: _Query_QueryAllocationPrecommit_Handler, }, + { + MethodName: "QueryAllocationPrecommits", + Handler: _Query_QueryAllocationPrecommits_Handler, + }, { MethodName: "QueryAllocationCommit", Handler: _Query_QueryAllocationCommit_Handler, }, + { + MethodName: "QueryAllocationCommits", + Handler: _Query_QueryAllocationCommits_Handler, + }, { MethodName: "QueryCommitPeriod", Handler: _Query_QueryCommitPeriod_Handler, }, + { + MethodName: "QueryCellars", + Handler: _Query_QueryCellars_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "allocation/v1/query.proto", @@ -997,7 +1103,7 @@ func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryDelegateAddressRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationPrecommitRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1007,16 +1113,23 @@ func (m *QueryDelegateAddressRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryDelegateAddressRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryDelegateAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Cellar) > 0 { + i -= len(m.Cellar) + copy(dAtA[i:], m.Cellar) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Cellar))) + i-- + dAtA[i] = 0x12 + } if len(m.Validator) > 0 { i -= len(m.Validator) copy(dAtA[i:], m.Validator) @@ -1027,7 +1140,7 @@ func (m *QueryDelegateAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } -func (m *QueryDelegateAddressResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationPrecommitResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1037,27 +1150,32 @@ func (m *QueryDelegateAddressResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryDelegateAddressResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryDelegateAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Delegate) > 0 { - i -= len(m.Delegate) - copy(dAtA[i:], m.Delegate) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Delegate))) + if m.Precommit != nil { + { + size, err := m.Precommit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } i-- - dAtA[i] = 0x12 + dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *QueryValidatorAddressRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationPrecommitsRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1067,27 +1185,20 @@ func (m *QueryValidatorAddressRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryValidatorAddressRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitsRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryValidatorAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i - var l int - _ = l - if len(m.Delegate) > 0 { - i -= len(m.Delegate) - copy(dAtA[i:], m.Delegate) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Delegate))) - i-- - dAtA[i] = 0xa - } + var l int + _ = l return len(dAtA) - i, nil } -func (m *QueryValidatorAddressResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationPrecommitsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1097,27 +1208,34 @@ func (m *QueryValidatorAddressResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryValidatorAddressResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitsResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryValidatorAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationPrecommitsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Validator) > 0 { - i -= len(m.Validator) - copy(dAtA[i:], m.Validator) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Validator))) - i-- - dAtA[i] = 0xa + if len(m.Precommits) > 0 { + for iNdEx := len(m.Precommits) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Precommits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } } return len(dAtA) - i, nil } -func (m *QueryAllocationPrecommitRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationCommitRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1127,12 +1245,12 @@ func (m *QueryAllocationPrecommitRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryAllocationPrecommitRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllocationPrecommitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -1154,7 +1272,7 @@ func (m *QueryAllocationPrecommitRequest) MarshalToSizedBuffer(dAtA []byte) (int return len(dAtA) - i, nil } -func (m *QueryAllocationPrecommitResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationCommitResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1164,19 +1282,19 @@ func (m *QueryAllocationPrecommitResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryAllocationPrecommitResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllocationPrecommitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Precommit != nil { + if m.Commit != nil { { - size, err := m.Precommit.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Commit.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1189,7 +1307,7 @@ func (m *QueryAllocationPrecommitResponse) MarshalToSizedBuffer(dAtA []byte) (in return len(dAtA) - i, nil } -func (m *QueryAllocationCommitRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationCommitsRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1199,34 +1317,20 @@ func (m *QueryAllocationCommitRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryAllocationCommitRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitsRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllocationCommitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Cellar) > 0 { - i -= len(m.Cellar) - copy(dAtA[i:], m.Cellar) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Cellar))) - i-- - dAtA[i] = 0x12 - } - if len(m.Validator) > 0 { - i -= len(m.Validator) - copy(dAtA[i:], m.Validator) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Validator))) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } -func (m *QueryAllocationCommitResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryAllocationCommitsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1236,27 +1340,29 @@ func (m *QueryAllocationCommitResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryAllocationCommitResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitsResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryAllocationCommitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryAllocationCommitsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.Commit != nil { - { - size, err := m.Commit.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.Commits) > 0 { + for iNdEx := len(m.Commits) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Commits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0xa } - i-- - dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -1322,6 +1428,66 @@ func (m *QueryCommitPeriodResponse) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } +func (m *QueryCellarsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryCellarsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryCellarsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryCellarsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryCellarsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryCellarsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Cellars) > 0 { + for iNdEx := len(m.Cellars) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Cellars[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -1353,7 +1519,7 @@ func (m *QueryParamsResponse) Size() (n int) { return n } -func (m *QueryDelegateAddressRequest) Size() (n int) { +func (m *QueryAllocationPrecommitRequest) Size() (n int) { if m == nil { return 0 } @@ -1363,49 +1529,51 @@ func (m *QueryDelegateAddressRequest) Size() (n int) { if l > 0 { n += 1 + l + sovQuery(uint64(l)) } + l = len(m.Cellar) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } return n } -func (m *QueryDelegateAddressResponse) Size() (n int) { +func (m *QueryAllocationPrecommitResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Delegate) - if l > 0 { + if m.Precommit != nil { + l = m.Precommit.Size() n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryValidatorAddressRequest) Size() (n int) { +func (m *QueryAllocationPrecommitsRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Delegate) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } return n } -func (m *QueryValidatorAddressResponse) Size() (n int) { +func (m *QueryAllocationPrecommitsResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Validator) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) + if len(m.Precommits) > 0 { + for _, e := range m.Precommits { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } } return n } -func (m *QueryAllocationPrecommitRequest) Size() (n int) { +func (m *QueryAllocationCommitRequest) Size() (n int) { if m == nil { return 0 } @@ -1422,45 +1590,39 @@ func (m *QueryAllocationPrecommitRequest) Size() (n int) { return n } -func (m *QueryAllocationPrecommitResponse) Size() (n int) { +func (m *QueryAllocationCommitResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Precommit != nil { - l = m.Precommit.Size() + if m.Commit != nil { + l = m.Commit.Size() n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryAllocationCommitRequest) Size() (n int) { +func (m *QueryAllocationCommitsRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Validator) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.Cellar) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } return n } -func (m *QueryAllocationCommitResponse) Size() (n int) { +func (m *QueryAllocationCommitsResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - if m.Commit != nil { - l = m.Commit.Size() - n += 1 + l + sovQuery(uint64(l)) + if len(m.Commits) > 0 { + for _, e := range m.Commits { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } } return n } @@ -1492,6 +1654,30 @@ func (m *QueryCommitPeriodResponse) Size() (n int) { return n } +func (m *QueryCellarsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryCellarsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Cellars) > 0 { + for _, e := range m.Cellars { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1631,7 +1817,7 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryDelegateAddressRequest) Unmarshal(dAtA []byte) error { +func (m *QueryAllocationPrecommitRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1654,10 +1840,10 @@ func (m *QueryDelegateAddressRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryDelegateAddressRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllocationPrecommitRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegateAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllocationPrecommitRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1692,59 +1878,9 @@ func (m *QueryDelegateAddressRequest) Unmarshal(dAtA []byte) error { } m.Validator = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryDelegateAddressResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryDelegateAddressResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryDelegateAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Delegate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Cellar", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1772,7 +1908,7 @@ func (m *QueryDelegateAddressResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Delegate = string(dAtA[iNdEx:postIndex]) + m.Cellar = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -1795,7 +1931,7 @@ func (m *QueryDelegateAddressResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryValidatorAddressRequest) Unmarshal(dAtA []byte) error { +func (m *QueryAllocationPrecommitResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1818,17 +1954,17 @@ func (m *QueryValidatorAddressRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorAddressRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllocationPrecommitResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllocationPrecommitResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Delegate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Precommit", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -1838,24 +1974,78 @@ func (m *QueryValidatorAddressRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } - if postIndex > l { + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Precommit == nil { + m.Precommit = &AllocationPrecommit{} + } + if err := m.Precommit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAllocationPrecommitsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.Delegate = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAllocationPrecommitsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllocationPrecommitsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -1877,7 +2067,7 @@ func (m *QueryValidatorAddressRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryValidatorAddressResponse) Unmarshal(dAtA []byte) error { +func (m *QueryAllocationPrecommitsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1900,17 +2090,17 @@ func (m *QueryValidatorAddressResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryValidatorAddressResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllocationPrecommitsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryValidatorAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllocationPrecommitsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Precommits", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowQuery @@ -1920,23 +2110,25 @@ func (m *QueryValidatorAddressResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthQuery } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthQuery } if postIndex > l { return io.ErrUnexpectedEOF } - m.Validator = string(dAtA[iNdEx:postIndex]) + m.Precommits = append(m.Precommits, &AllocationPrecommit{}) + if err := m.Precommits[len(m.Precommits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -1959,7 +2151,7 @@ func (m *QueryValidatorAddressResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllocationPrecommitRequest) Unmarshal(dAtA []byte) error { +func (m *QueryAllocationCommitRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1982,10 +2174,10 @@ func (m *QueryAllocationPrecommitRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllocationPrecommitRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllocationCommitRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllocationPrecommitRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllocationCommitRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -2073,7 +2265,7 @@ func (m *QueryAllocationPrecommitRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllocationPrecommitResponse) Unmarshal(dAtA []byte) error { +func (m *QueryAllocationCommitResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2096,15 +2288,15 @@ func (m *QueryAllocationPrecommitResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllocationPrecommitResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllocationCommitResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllocationPrecommitResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllocationCommitResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Precommit", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Commit", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2131,10 +2323,10 @@ func (m *QueryAllocationPrecommitResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Precommit == nil { - m.Precommit = &AllocationPrecommit{} + if m.Commit == nil { + m.Commit = &Allocation{} } - if err := m.Precommit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Commit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2159,7 +2351,7 @@ func (m *QueryAllocationPrecommitResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllocationCommitRequest) Unmarshal(dAtA []byte) error { +func (m *QueryAllocationCommitsRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2182,76 +2374,12 @@ func (m *QueryAllocationCommitRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllocationCommitRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllocationCommitsRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllocationCommitRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllocationCommitsRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Validator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Cellar", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Cellar = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -2273,7 +2401,7 @@ func (m *QueryAllocationCommitRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryAllocationCommitResponse) Unmarshal(dAtA []byte) error { +func (m *QueryAllocationCommitsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -2296,15 +2424,15 @@ func (m *QueryAllocationCommitResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryAllocationCommitResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryAllocationCommitsResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllocationCommitResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryAllocationCommitsResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Commit", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Commits", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -2331,10 +2459,8 @@ func (m *QueryAllocationCommitResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Commit == nil { - m.Commit = &Allocation{} - } - if err := m.Commit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Commits = append(m.Commits, &Allocation{}) + if err := m.Commits[len(m.Commits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2516,6 +2642,140 @@ func (m *QueryCommitPeriodResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryCellarsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryCellarsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCellarsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryCellarsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryCellarsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCellarsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cellars", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cellars = append(m.Cellars, &Cellar{}) + if err := m.Cellars[len(m.Cellars)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/allocation/types/query.pb.gw.go b/x/allocation/types/query.pb.gw.go index 0b25e329..8c612233 100644 --- a/x/allocation/types/query.pb.gw.go +++ b/x/allocation/types/query.pb.gw.go @@ -49,8 +49,8 @@ func local_request_Query_QueryParams_0(ctx context.Context, marshaler runtime.Ma } -func request_Query_QueryDelegateAddress_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryDelegateAddressRequest +func request_Query_QueryAllocationPrecommit_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllocationPrecommitRequest var metadata runtime.ServerMetadata var ( @@ -71,13 +71,24 @@ func request_Query_QueryDelegateAddress_0(ctx context.Context, marshaler runtime return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator", err) } - msg, err := client.QueryDelegateAddress(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + val, ok = pathParams["cellar"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cellar") + } + + protoReq.Cellar, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cellar", err) + } + + msg, err := client.QueryAllocationPrecommit(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_QueryDelegateAddress_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryDelegateAddressRequest +func local_request_Query_QueryAllocationPrecommit_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllocationPrecommitRequest var metadata runtime.ServerMetadata var ( @@ -98,71 +109,42 @@ func local_request_Query_QueryDelegateAddress_0(ctx context.Context, marshaler r return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator", err) } - msg, err := server.QueryDelegateAddress(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_QueryValidatorAddress_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryValidatorAddressRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["delegate"] + val, ok = pathParams["cellar"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "delegate") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cellar") } - protoReq.Delegate, err = runtime.String(val) + protoReq.Cellar, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "delegate", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cellar", err) } - msg, err := client.QueryValidatorAddress(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.QueryAllocationPrecommit(ctx, &protoReq) return msg, metadata, err } -func local_request_Query_QueryValidatorAddress_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryValidatorAddressRequest +func request_Query_QueryAllocationPrecommits_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllocationPrecommitsRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["delegate"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "delegate") - } + msg, err := client.QueryAllocationPrecommits(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - protoReq.Delegate, err = runtime.String(val) +} - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "delegate", err) - } +func local_request_Query_QueryAllocationPrecommits_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllocationPrecommitsRequest + var metadata runtime.ServerMetadata - msg, err := server.QueryValidatorAddress(ctx, &protoReq) + msg, err := server.QueryAllocationPrecommits(ctx, &protoReq) return msg, metadata, err } -var ( - filter_Query_QueryAllocationPrecommit_0 = &utilities.DoubleArray{Encoding: map[string]int{"validator": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_Query_QueryAllocationPrecommit_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllocationPrecommitRequest +func request_Query_QueryAllocationCommit_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllocationCommitRequest var metadata runtime.ServerMetadata var ( @@ -183,57 +165,23 @@ func request_Query_QueryAllocationPrecommit_0(ctx context.Context, marshaler run return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_QueryAllocationPrecommit_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.QueryAllocationPrecommit(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_QueryAllocationPrecommit_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllocationPrecommitRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["validator"] + val, ok = pathParams["cellar"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cellar") } - protoReq.Validator, err = runtime.String(val) + protoReq.Cellar, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cellar", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_QueryAllocationPrecommit_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.QueryAllocationPrecommit(ctx, &protoReq) + msg, err := client.QueryAllocationCommit(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -var ( - filter_Query_QueryAllocationCommit_0 = &utilities.DoubleArray{Encoding: map[string]int{"validator": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} -) - -func request_Query_QueryAllocationCommit_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { +func local_request_Query_QueryAllocationCommit_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq QueryAllocationCommitRequest var metadata runtime.ServerMetadata @@ -255,48 +203,36 @@ func request_Query_QueryAllocationCommit_0(ctx context.Context, marshaler runtim return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + val, ok = pathParams["cellar"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cellar") } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_QueryAllocationCommit_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + + protoReq.Cellar, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cellar", err) } - msg, err := client.QueryAllocationCommit(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := server.QueryAllocationCommit(ctx, &protoReq) return msg, metadata, err } -func local_request_Query_QueryAllocationCommit_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllocationCommitRequest +func request_Query_QueryAllocationCommits_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllocationCommitsRequest var metadata runtime.ServerMetadata - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["validator"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator") - } - - protoReq.Validator, err = runtime.String(val) + msg, err := client.QueryAllocationCommits(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator", err) - } +} - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_QueryAllocationCommit_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } +func local_request_Query_QueryAllocationCommits_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllocationCommitsRequest + var metadata runtime.ServerMetadata - msg, err := server.QueryAllocationCommit(ctx, &protoReq) + msg, err := server.QueryAllocationCommits(ctx, &protoReq) return msg, metadata, err } @@ -319,6 +255,24 @@ func local_request_Query_QueryCommitPeriod_0(ctx context.Context, marshaler runt } +func request_Query_QueryCellars_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCellarsRequest + var metadata runtime.ServerMetadata + + msg, err := client.QueryCellars(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_QueryCellars_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCellarsRequest + var metadata runtime.ServerMetadata + + msg, err := server.QueryCellars(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -345,7 +299,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("GET", pattern_Query_QueryDelegateAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationPrecommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -354,18 +308,18 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_QueryDelegateAddress_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_QueryAllocationPrecommit_0(rctx, inboundMarshaler, server, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryDelegateAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationPrecommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_QueryValidatorAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationPrecommits_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -374,18 +328,18 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_QueryValidatorAddress_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_QueryAllocationPrecommits_0(rctx, inboundMarshaler, server, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryValidatorAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationPrecommits_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_QueryAllocationPrecommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationCommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -394,18 +348,18 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_QueryAllocationPrecommit_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_QueryAllocationCommit_0(rctx, inboundMarshaler, server, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryAllocationPrecommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationCommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_QueryAllocationCommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationCommits_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -414,14 +368,14 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_QueryAllocationCommit_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_QueryAllocationCommits_0(rctx, inboundMarshaler, server, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryAllocationCommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationCommits_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -445,6 +399,26 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_QueryCellars_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_QueryCellars_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryCellars_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -506,7 +480,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("GET", pattern_Query_QueryDelegateAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationPrecommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -515,18 +489,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_QueryDelegateAddress_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_QueryAllocationPrecommit_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryDelegateAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationPrecommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_QueryValidatorAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationPrecommits_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -535,18 +509,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_QueryValidatorAddress_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_QueryAllocationPrecommits_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryValidatorAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationPrecommits_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_QueryAllocationPrecommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationCommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -555,18 +529,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_QueryAllocationPrecommit_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_QueryAllocationCommit_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryAllocationPrecommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationCommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_QueryAllocationCommit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_QueryAllocationCommits_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -575,14 +549,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_QueryAllocationCommit_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_QueryAllocationCommits_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_QueryAllocationCommit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_QueryAllocationCommits_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -606,33 +580,57 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_QueryCellars_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_QueryCellars_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryCellars_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } var ( pattern_Query_QueryParams_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"sommelier", "allocation", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_QueryDelegateAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"sommelier", "allocation", "v1", "delegates", "validator"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_QueryAllocationPrecommit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"sommelier", "allocation", "v1", "precommits", "validator", "cellar"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_QueryValidatorAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"sommelier", "allocation", "v1", "validators", "delegate"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_QueryAllocationPrecommits_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"sommelier", "allocation", "v1", "precommits"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_QueryAllocationPrecommit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"sommelier", "allocation", "v1", "precommits", "validator"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_QueryAllocationCommit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"sommelier", "allocation", "v1", "commits", "validator", "cellar"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_QueryAllocationCommit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"sommelier", "allocation", "v1", "commits", "validator"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_QueryAllocationCommits_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"sommelier", "allocation", "v1", "commits"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_QueryCommitPeriod_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"sommelier", "allocation", "v1", "commit_period"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_QueryCellars_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"sommelier", "allocation", "v1", "cellars"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( forward_Query_QueryParams_0 = runtime.ForwardResponseMessage - forward_Query_QueryDelegateAddress_0 = runtime.ForwardResponseMessage - - forward_Query_QueryValidatorAddress_0 = runtime.ForwardResponseMessage - forward_Query_QueryAllocationPrecommit_0 = runtime.ForwardResponseMessage + forward_Query_QueryAllocationPrecommits_0 = runtime.ForwardResponseMessage + forward_Query_QueryAllocationCommit_0 = runtime.ForwardResponseMessage + forward_Query_QueryAllocationCommits_0 = runtime.ForwardResponseMessage + forward_Query_QueryCommitPeriod_0 = runtime.ForwardResponseMessage + + forward_Query_QueryCellars_0 = runtime.ForwardResponseMessage ) diff --git a/x/allocation/types/tick_range.go b/x/allocation/types/tick_range.go new file mode 100644 index 00000000..f516759e --- /dev/null +++ b/x/allocation/types/tick_range.go @@ -0,0 +1,7 @@ +package types + +func (tr *TickRange) Equals(other TickRange) bool { + return (tr.Upper == other.Upper) && + (tr.Lower == other.Lower) && + (tr.Weight == other.Weight) +} diff --git a/x/allocation/types/tx.pb.go b/x/allocation/types/tx.pb.go index 73877f8e..594e64cc 100644 --- a/x/allocation/types/tx.pb.go +++ b/x/allocation/types/tx.pb.go @@ -30,99 +30,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// MsgDelegateAllocations defines sdk.Msg for delegating allocation rights from a validator -// to another address, must be signed by an active validator -type MsgDelegateAllocations struct { - // delegate account address - Delegate string `protobuf:"bytes,1,opt,name=delegate,proto3" json:"delegate,omitempty"` - // validator operator address - Validator string `protobuf:"bytes,2,opt,name=validator,proto3" json:"validator,omitempty"` -} - -func (m *MsgDelegateAllocations) Reset() { *m = MsgDelegateAllocations{} } -func (m *MsgDelegateAllocations) String() string { return proto.CompactTextString(m) } -func (*MsgDelegateAllocations) ProtoMessage() {} -func (*MsgDelegateAllocations) Descriptor() ([]byte, []int) { - return fileDescriptor_194e979be0693c53, []int{0} -} -func (m *MsgDelegateAllocations) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgDelegateAllocations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgDelegateAllocations.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgDelegateAllocations) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDelegateAllocations.Merge(m, src) -} -func (m *MsgDelegateAllocations) XXX_Size() int { - return m.Size() -} -func (m *MsgDelegateAllocations) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDelegateAllocations.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgDelegateAllocations proto.InternalMessageInfo - -func (m *MsgDelegateAllocations) GetDelegate() string { - if m != nil { - return m.Delegate - } - return "" -} - -func (m *MsgDelegateAllocations) GetValidator() string { - if m != nil { - return m.Validator - } - return "" -} - -// MsgDelegateAllocationsResponse is the response type for the Msg/DelegateAllocations gRPC method. -type MsgDelegateAllocationsResponse struct { -} - -func (m *MsgDelegateAllocationsResponse) Reset() { *m = MsgDelegateAllocationsResponse{} } -func (m *MsgDelegateAllocationsResponse) String() string { return proto.CompactTextString(m) } -func (*MsgDelegateAllocationsResponse) ProtoMessage() {} -func (*MsgDelegateAllocationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_194e979be0693c53, []int{1} -} -func (m *MsgDelegateAllocationsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgDelegateAllocationsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgDelegateAllocationsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgDelegateAllocationsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgDelegateAllocationsResponse.Merge(m, src) -} -func (m *MsgDelegateAllocationsResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgDelegateAllocationsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgDelegateAllocationsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgDelegateAllocationsResponse proto.InternalMessageInfo - // MsgAllocationPrecommit - sdk.Msg for prevoting on an array of oracle data types. // The purpose of the prevote is to hide vote for data with hashes formatted as hex string: // SHA256("{salt}:{data_cannonical_json}:{voter}") @@ -137,7 +44,7 @@ func (m *MsgAllocationPrecommit) Reset() { *m = MsgAllocationPrecommit{} func (m *MsgAllocationPrecommit) String() string { return proto.CompactTextString(m) } func (*MsgAllocationPrecommit) ProtoMessage() {} func (*MsgAllocationPrecommit) Descriptor() ([]byte, []int) { - return fileDescriptor_194e979be0693c53, []int{2} + return fileDescriptor_194e979be0693c53, []int{0} } func (m *MsgAllocationPrecommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -188,7 +95,7 @@ func (m *MsgAllocationPrecommitResponse) Reset() { *m = MsgAllocationPre func (m *MsgAllocationPrecommitResponse) String() string { return proto.CompactTextString(m) } func (*MsgAllocationPrecommitResponse) ProtoMessage() {} func (*MsgAllocationPrecommitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_194e979be0693c53, []int{3} + return fileDescriptor_194e979be0693c53, []int{1} } func (m *MsgAllocationPrecommitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -229,7 +136,7 @@ func (m *MsgAllocationCommit) Reset() { *m = MsgAllocationCommit{} } func (m *MsgAllocationCommit) String() string { return proto.CompactTextString(m) } func (*MsgAllocationCommit) ProtoMessage() {} func (*MsgAllocationCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_194e979be0693c53, []int{4} + return fileDescriptor_194e979be0693c53, []int{2} } func (m *MsgAllocationCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -280,7 +187,7 @@ func (m *MsgAllocationCommitResponse) Reset() { *m = MsgAllocationCommit func (m *MsgAllocationCommitResponse) String() string { return proto.CompactTextString(m) } func (*MsgAllocationCommitResponse) ProtoMessage() {} func (*MsgAllocationCommitResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_194e979be0693c53, []int{5} + return fileDescriptor_194e979be0693c53, []int{3} } func (m *MsgAllocationCommitResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -310,8 +217,6 @@ func (m *MsgAllocationCommitResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgAllocationCommitResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgDelegateAllocations)(nil), "allocation.v1.MsgDelegateAllocations") - proto.RegisterType((*MsgDelegateAllocationsResponse)(nil), "allocation.v1.MsgDelegateAllocationsResponse") proto.RegisterType((*MsgAllocationPrecommit)(nil), "allocation.v1.MsgAllocationPrecommit") proto.RegisterType((*MsgAllocationPrecommitResponse)(nil), "allocation.v1.MsgAllocationPrecommitResponse") proto.RegisterType((*MsgAllocationCommit)(nil), "allocation.v1.MsgAllocationCommit") @@ -321,31 +226,28 @@ func init() { func init() { proto.RegisterFile("allocation/v1/tx.proto", fileDescriptor_194e979be0693c53) } var fileDescriptor_194e979be0693c53 = []byte{ - // 375 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x4a, 0xc3, 0x40, - 0x18, 0x6c, 0x5a, 0x08, 0x76, 0x45, 0x90, 0x14, 0x4a, 0x1b, 0x75, 0x29, 0x01, 0xa1, 0x08, 0x66, - 0x69, 0x7d, 0x01, 0xff, 0x2e, 0x1e, 0x0a, 0x92, 0xa3, 0x17, 0x4d, 0xd2, 0x75, 0x8d, 0x26, 0xf9, - 0x42, 0x76, 0x1b, 0xda, 0xb7, 0xf0, 0x9d, 0xbc, 0x78, 0xec, 0xd1, 0xa3, 0xb4, 0x2f, 0x22, 0xe6, - 0xa7, 0x69, 0x74, 0x6d, 0x3d, 0xce, 0x37, 0xf3, 0xcd, 0x0c, 0xdf, 0xb2, 0xa8, 0x6d, 0xfb, 0x3e, - 0xb8, 0xb6, 0xf0, 0x20, 0x24, 0xc9, 0x80, 0x88, 0xa9, 0x19, 0xc5, 0x20, 0x40, 0xdb, 0x2b, 0xe7, - 0x66, 0x32, 0xd0, 0xbb, 0x2e, 0xf0, 0x00, 0xf8, 0x7d, 0x4a, 0x92, 0x0c, 0x64, 0x4a, 0xbd, 0xcb, - 0x00, 0x98, 0x4f, 0x49, 0x8a, 0x9c, 0xc9, 0x23, 0xb1, 0xc3, 0x59, 0x4e, 0xe1, 0xaa, 0xf9, 0x9a, - 0x65, 0xca, 0x1b, 0x16, 0x6a, 0x8f, 0x38, 0xbb, 0xa6, 0x3e, 0x65, 0xb6, 0xa0, 0x17, 0x2b, 0x9a, - 0x6b, 0x3a, 0xda, 0x19, 0xe7, 0xe3, 0x8e, 0xd2, 0x53, 0xfa, 0x4d, 0x6b, 0x85, 0xb5, 0x43, 0xd4, - 0x4c, 0x6c, 0xdf, 0x1b, 0xdb, 0x02, 0xe2, 0x4e, 0x3d, 0x25, 0xcb, 0x81, 0xd1, 0x43, 0x58, 0xee, - 0x69, 0x51, 0x1e, 0x41, 0xc8, 0xa9, 0x11, 0xa7, 0xa9, 0x25, 0x73, 0x1b, 0x53, 0x17, 0x82, 0xc0, - 0x13, 0xda, 0x39, 0x6a, 0x46, 0x05, 0xe8, 0x28, 0xbd, 0x46, 0x7f, 0x77, 0x68, 0x98, 0x95, 0x43, - 0x98, 0x92, 0x35, 0xab, 0x5c, 0xd2, 0xda, 0x48, 0xe5, 0x1e, 0x0b, 0x69, 0x51, 0x2c, 0x47, 0x79, - 0x2b, 0xd9, 0x72, 0xd1, 0xea, 0x01, 0xb5, 0x2a, 0x8a, 0xab, 0xcc, 0x70, 0x80, 0xd4, 0x4a, 0x9f, - 0xee, 0x9f, 0x7d, 0x2c, 0x75, 0x4b, 0x87, 0x23, 0x74, 0x20, 0x49, 0x28, 0x0a, 0x0c, 0xdf, 0xea, - 0xa8, 0x31, 0xe2, 0x4c, 0x7b, 0x41, 0x2d, 0xd9, 0x8b, 0x1c, 0xff, 0x08, 0x96, 0x1f, 0x59, 0x3f, - 0xfd, 0x97, 0xac, 0x08, 0xfd, 0x0e, 0x93, 0x3d, 0x84, 0x24, 0x4c, 0x22, 0x93, 0x85, 0x6d, 0x38, - 0xb1, 0xe6, 0xa0, 0xfd, 0x5f, 0xf7, 0x35, 0x36, 0x59, 0x64, 0x1a, 0xfd, 0x64, 0xbb, 0xa6, 0xc8, - 0xb8, 0xbc, 0x79, 0x5f, 0x60, 0x65, 0xbe, 0xc0, 0xca, 0xe7, 0x02, 0x2b, 0xaf, 0x4b, 0x5c, 0x9b, - 0x2f, 0x71, 0xed, 0x63, 0x89, 0x6b, 0x77, 0x84, 0x79, 0xe2, 0x69, 0xe2, 0x98, 0x2e, 0x04, 0x24, - 0xa2, 0x8c, 0xcd, 0x9e, 0x13, 0xc2, 0x21, 0x08, 0xa8, 0xef, 0xd1, 0x98, 0x4c, 0xd7, 0x7e, 0x07, - 0x11, 0xb3, 0x88, 0x72, 0x47, 0x4d, 0x3f, 0xc9, 0xd9, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0e, - 0xd0, 0xe6, 0x9e, 0xa3, 0x03, 0x00, 0x00, + // 322 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0xcd, 0x4a, 0xf3, 0x40, + 0x14, 0xed, 0x7c, 0x85, 0x40, 0xe7, 0x43, 0x90, 0x14, 0x4a, 0x1b, 0x71, 0x08, 0x01, 0xa1, 0x08, + 0x66, 0x48, 0x7d, 0x01, 0x7f, 0x56, 0x2e, 0x0a, 0x92, 0xa5, 0x1b, 0x4d, 0xc2, 0x38, 0x46, 0x33, + 0xb9, 0x21, 0x33, 0x0d, 0xcd, 0x5b, 0xf8, 0x58, 0x2e, 0xbb, 0x12, 0x97, 0x92, 0xbc, 0x88, 0x90, + 0x34, 0xb6, 0xd1, 0x68, 0x5d, 0x9e, 0x39, 0xe7, 0x9e, 0x73, 0xee, 0x70, 0xf1, 0xc8, 0x8b, 0x22, + 0x08, 0x3c, 0x15, 0x42, 0x4c, 0x33, 0x87, 0xaa, 0xa5, 0x9d, 0xa4, 0xa0, 0x40, 0xdf, 0xdb, 0xbc, + 0xdb, 0x99, 0x63, 0x4c, 0x02, 0x90, 0x02, 0xe4, 0x6d, 0x45, 0xd2, 0x1a, 0xd4, 0x4a, 0x63, 0xc2, + 0x01, 0x78, 0xc4, 0x68, 0x85, 0xfc, 0xc5, 0x3d, 0xf5, 0xe2, 0x7c, 0x4d, 0x91, 0xb6, 0xf9, 0x96, + 0x65, 0xc5, 0x5b, 0x29, 0x1e, 0xcd, 0x25, 0x3f, 0xff, 0x7c, 0xbe, 0x4e, 0x59, 0x00, 0x42, 0x84, + 0x4a, 0x3f, 0xc3, 0x83, 0xa4, 0x01, 0x63, 0x64, 0xf6, 0xa7, 0xff, 0x67, 0x96, 0xdd, 0xaa, 0x64, + 0x77, 0x8c, 0xb9, 0x9b, 0x21, 0x7d, 0x84, 0x35, 0x19, 0xf2, 0x98, 0xa5, 0xe3, 0x7f, 0x26, 0x9a, + 0x0e, 0xdc, 0x35, 0xb2, 0x4c, 0x4c, 0xba, 0x33, 0x5d, 0x26, 0x13, 0x88, 0x25, 0xb3, 0xee, 0xf0, + 0xb0, 0xa5, 0xb8, 0xac, 0x0d, 0x1d, 0xac, 0xb5, 0xfa, 0x4c, 0x7e, 0xec, 0xe3, 0x6a, 0x3b, 0x3a, + 0x1c, 0xe2, 0x83, 0x8e, 0x84, 0xa6, 0xc0, 0xec, 0x15, 0xe1, 0xfe, 0x5c, 0x72, 0xfd, 0x09, 0x0f, + 0xbb, 0xfe, 0xe6, 0xe8, 0x4b, 0x70, 0xf7, 0x3a, 0xc6, 0xc9, 0x9f, 0x64, 0x4d, 0xa8, 0xee, 0xe3, + 0xfd, 0x6f, 0x2b, 0x5b, 0xbf, 0x59, 0xd4, 0x1a, 0xe3, 0x78, 0xb7, 0xa6, 0xc9, 0xb8, 0xb8, 0x7a, + 0x29, 0x08, 0x5a, 0x15, 0x04, 0xbd, 0x17, 0x04, 0x3d, 0x97, 0xa4, 0xb7, 0x2a, 0x49, 0xef, 0xad, + 0x24, 0xbd, 0x1b, 0xca, 0x43, 0xf5, 0xb0, 0xf0, 0xed, 0x00, 0x04, 0x4d, 0x18, 0xe7, 0xf9, 0x63, + 0x46, 0x25, 0x08, 0xc1, 0xa2, 0x90, 0xa5, 0x74, 0xb9, 0x75, 0x3a, 0x54, 0xe5, 0x09, 0x93, 0xbe, + 0x56, 0x5d, 0xd0, 0xe9, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, 0x43, 0x93, 0xba, 0xe3, 0xc0, 0x02, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -360,11 +262,9 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { - // DelegateAllocations defines a message that delegates the allocating to an account address. - DelegateAllocations(ctx context.Context, in *MsgDelegateAllocations, opts ...grpc.CallOption) (*MsgDelegateAllocationsResponse, error) - // OracleDataPrevote defines a message that commits a hash of a oracle data feed before the data is actually submitted. + // AllocationPrecommit defines a message that commits a hash of allocation data feed before the data is actually submitted. AllocationPrecommit(ctx context.Context, in *MsgAllocationPrecommit, opts ...grpc.CallOption) (*MsgAllocationPrecommitResponse, error) - // OracleDataVote defines a message to submit the actual oracle data that was committed by the feeder through the prevote. + // AllocationCommit defines a message to submit the actual allocation data that was committed by the feeder through the pre-commit. AllocationCommit(ctx context.Context, in *MsgAllocationCommit, opts ...grpc.CallOption) (*MsgAllocationCommitResponse, error) } @@ -376,15 +276,6 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) DelegateAllocations(ctx context.Context, in *MsgDelegateAllocations, opts ...grpc.CallOption) (*MsgDelegateAllocationsResponse, error) { - out := new(MsgDelegateAllocationsResponse) - err := c.cc.Invoke(ctx, "/allocation.v1.Msg/DelegateAllocations", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) AllocationPrecommit(ctx context.Context, in *MsgAllocationPrecommit, opts ...grpc.CallOption) (*MsgAllocationPrecommitResponse, error) { out := new(MsgAllocationPrecommitResponse) err := c.cc.Invoke(ctx, "/allocation.v1.Msg/AllocationPrecommit", in, out, opts...) @@ -405,11 +296,9 @@ func (c *msgClient) AllocationCommit(ctx context.Context, in *MsgAllocationCommi // MsgServer is the server API for Msg service. type MsgServer interface { - // DelegateAllocations defines a message that delegates the allocating to an account address. - DelegateAllocations(context.Context, *MsgDelegateAllocations) (*MsgDelegateAllocationsResponse, error) - // OracleDataPrevote defines a message that commits a hash of a oracle data feed before the data is actually submitted. + // AllocationPrecommit defines a message that commits a hash of allocation data feed before the data is actually submitted. AllocationPrecommit(context.Context, *MsgAllocationPrecommit) (*MsgAllocationPrecommitResponse, error) - // OracleDataVote defines a message to submit the actual oracle data that was committed by the feeder through the prevote. + // AllocationCommit defines a message to submit the actual allocation data that was committed by the feeder through the pre-commit. AllocationCommit(context.Context, *MsgAllocationCommit) (*MsgAllocationCommitResponse, error) } @@ -417,9 +306,6 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) DelegateAllocations(ctx context.Context, req *MsgDelegateAllocations) (*MsgDelegateAllocationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DelegateAllocations not implemented") -} func (*UnimplementedMsgServer) AllocationPrecommit(ctx context.Context, req *MsgAllocationPrecommit) (*MsgAllocationPrecommitResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AllocationPrecommit not implemented") } @@ -431,24 +317,6 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_DelegateAllocations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgDelegateAllocations) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).DelegateAllocations(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/allocation.v1.Msg/DelegateAllocations", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).DelegateAllocations(ctx, req.(*MsgDelegateAllocations)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_AllocationPrecommit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgAllocationPrecommit) if err := dec(in); err != nil { @@ -489,10 +357,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "allocation.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "DelegateAllocations", - Handler: _Msg_DelegateAllocations_Handler, - }, { MethodName: "AllocationPrecommit", Handler: _Msg_AllocationPrecommit_Handler, @@ -506,66 +370,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Metadata: "allocation/v1/tx.proto", } -func (m *MsgDelegateAllocations) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgDelegateAllocations) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDelegateAllocations) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Validator) > 0 { - i -= len(m.Validator) - copy(dAtA[i:], m.Validator) - i = encodeVarintTx(dAtA, i, uint64(len(m.Validator))) - i-- - dAtA[i] = 0x12 - } - if len(m.Delegate) > 0 { - i -= len(m.Delegate) - copy(dAtA[i:], m.Delegate) - i = encodeVarintTx(dAtA, i, uint64(len(m.Delegate))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgDelegateAllocationsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgDelegateAllocationsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgDelegateAllocationsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - func (m *MsgAllocationPrecommit) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -711,32 +515,6 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *MsgDelegateAllocations) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Delegate) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Validator) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgDelegateAllocationsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - func (m *MsgAllocationPrecommit) Size() (n int) { if m == nil { return 0 @@ -799,170 +577,6 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *MsgDelegateAllocations) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgDelegateAllocations: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDelegateAllocations: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Delegate", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Delegate = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Validator = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgDelegateAllocationsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgDelegateAllocationsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgDelegateAllocationsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *MsgAllocationPrecommit) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0